Web路由列表

什么是Web路由列表

在Web开发中,路由列表通常用于将请求的URL映射到相应的处理函数。尽管路由列表可以用不同的数据结构来实现,但在很多情况下是一个字典(在Python中)或其他类似的键值对结构。

路由列表(Django)

Django框架采用的路由列表方式是在模块中创建一个带有映射关系的字典,映射关系要自己写,适用于较少的映射关系

路由字典模块

from Test import route_function

route_dict = {
    "index.py": route_function.index,
    "center.py": route_function.center,
    "gettime.py": route_function.gettime
}

for item in route_dict:
    print(route_dict[item])
    route_dict[item]()

"""打印字典键的值可以看出,是一个函数的地址
<function index at 0x000001F05D2418A0>
<function center at 0x000001F05D241940>
<function gettime at 0x000001F05D2419E0>


函数的执行结果
This is index
This is center
This is gettime
"""

响应函数模块

def index():
    print("This is index")


def center():
    print("This is center")


def gettime():
    print("This is gettime")

路由装饰器(flask)

flask框架的路由列表采用的是装饰器方法来生成路由列表,需要创建一个装饰器工厂直接对处理函数进行装饰即可,适用于较多的映射关系

一个空字典模块

router_dict = {}

装饰器模块

from Test import urls


def router(path):
    """需要传入访问的路径,用于添加到路由字典的key"""

    def function_out(func):
        """需要传入函数,将函数的内存地址存到字典的value"""
        # 在此处将映射关系添加到字典最为合适
        # 因为,路径和函数在内存中的地址都已经出现了
        # 将映射关系添加到字典中
        urls.router_dict[path] = func

        def function_in():
            # 返回映射函数的地址
            func()

        return function_in

    return function_out


@router("index.py")
def index():
    print("This is index")


@router("center.py")
def center():
    print("This is center")


@router("gettime.py")
def gettime():
    print("This is gettime")

测试模块

from Test import urls
from Test import funs

print(urls.router_dict)
for item in urls.router_dict:
    print(urls.router_dict[item])
    urls.router_dict[item]()

"""
可以看到装饰器模块导入后,字典中的值被自动添加进去了
因为模块导入后会被加载到内存,在内存中,装饰器就已经开始生效了
{'index.py': <function index at 0x000001CD661519E0>, 
'center.py': <function center at 0x000001CD66151B20>,
 'gettime.py': <function gettime at 0x000001CD66151C60>}
 
 
<function index at 0x000001CD661519E0>
This is index

<function center at 0x000001CD66151B20>
This is center

<function gettime at 0x000001CD66151C60>
This is gettime
"""

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/368000.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

远程手机搭建Termux环境,并通过ssh连接Termux

背景 Termux只能通过鼠标点击&#xff0c;无法使用电脑键盘&#xff0c;输入速度很慢&#xff0c;你想通过ssh 连接Termux&#xff0c;获得友好体验搞了个云手机&#xff0c;想像普通手机那样充当服务器想把自己的手机公开到局域网中供同事调试想把自己的模拟器公开到局域网中…

vue3-逻辑复用

什么是组合式函数 _无状态逻辑的函数_&#xff1a;它在接收一些输入后立刻返回所期望的输出。 比如 时间格式化的函数。 有状态逻辑的函数: 有状态逻辑负责管理会随时间而变化的状态。 比如 跟踪当前鼠标在页面中的位置。 在 Vue 应用的概念中&#xff0c;“组合式函数”(…

爬虫学习笔记-scrapy安装及第一个项目创建问题及解决措施

1.安装scrapy pycharm终端运行 pip install scrapy -i https://pypi.douban.com/simple 2.终端运行scrapy startproject scrapy_baidu,创建项目 问题1:lxml版本低导致无法找到 解决措施:更新或者重新安装lxml 3.项目创建成功 4.终端cd到项目的spiders文件夹下,cd scra…

JS 引导动画

前言 引导动画是程序在某一时刻播放的动画&#xff0c;通常用于向用户介绍程序的功能和特点。 实现效果 实现方式 引导动画的实现方式有很多种&#xff0c;这里我使用的是 CSS 的 clip-path 属性。 技术选型 这里我为什么要选择 clip-path 属性而不是 mask 属性呢&#xf…

SpringbootWeb案例

准备工作 需求说明 部门管理 部门管理功能开发包括&#xff1a;查询部门列表、删除部门、新增部门、修改部门   员工管理功能开发包括&#xff1a;查询员工列表(分页、条件)、删除员工、新增员工、修改员工 环境搭建 环境搭建步骤&#xff1a;1. 准备数据库表(dept、emp)…

ubuntu 安装 kvmQemu no active connection to install on

更新 apt sudo apt update检查虚拟化是否开启 0 不开&#xff0c;其余数字表示开启&#xff0c;开不开都可以&#xff0c;不开性能弱&#xff0c;只能跑 x86 系统 egrep -c (vmx|svm) /proc/cpuinfo安装 sudo apt install -y qemu-kvm virt-manager libvirt-daemon-system virt…

2.3作业

写一个shell脚本判断用户输入的是否是数字

我要成为嵌入式高手之2月3日Linux高编第一天!!

学习框架 一、IO编程 多任务编程&#xff08;进程、线程&#xff09; 网络编程 数据库编程 二、数据结构 学习笔记 Linux软件编程&#xff1a; 一. Linux 1、Linux: 操作系统的内核&#xff0c;真正的操作系统叫Ubuntu、Redhat、CentOS..... 内核&#xff08;纯c实现的代码…

pdmodel从动态模型转成静态onnx

1.下载项目 git clone https://github.com/jiangjiajun/PaddleUtils.git 2.新建两个新的文件夹 第一个文件夹放两个必要文件 第二个文件夹可以设置为空&#xff0c;用来存放转换后的模型 如图&#xff1a; 3.在终端运行 python paddle/paddle_infer_shape.py --model_dir …

DevOps落地笔记-10|环境管理:交付测试环境的迅猛方法

上一讲我主要介绍在开发过程中如何处理应用程序在不同环境的配置问题&#xff0c;通过有效管理应用程序的配置&#xff0c;最终实现一包到底。不同的环境不仅会带来应用程序本身的配置管理问题&#xff0c;环境本身的创建、管理、一致性等问题也需要解决。环境管理的问题也是我…

在jetbrains IDEA/Pycharm/Android Studio中安装官方rust插件,开始rust编程

在idea插件市场搜索rust&#xff1a;JetBrains Marketplace &#xff0c;就可以找到rust插件&#xff1a; jetbrains官方rust插件地址&#xff1a;[Deprecated] Rust - IntelliJ IDEs Plugin | Marketplace 直接在idea中搜索rust好像是搜不到的&#xff1a; 需要在这个插件市场…

Nginx简单阐述及安装配置

目录 一.什么是Nginx 二.Nginx优缺点 1.优点 2.缺点 三.正向代理与反向代理 1.正向代理 2.反向代理 四.安装配置 1.添加Nginx官方yum源 2.使用yum安装Nginx 3.配置防火墙 4.启动后效果 一.什么是Nginx Nginx&#xff08;“engine x”&#xff09;是一个高性能的HTTP…

Python3 交叉编译 numpy pandas scipy scikit-learn

1. 概述 由于需要将Python3.7 和一些软件包交叉编译到 armv7 平台硬件&#xff0c;如果是arm64位的系统&#xff0c;很多包都有预编译好的版本&#xff0c;可直接下载。本文主要在基于 crossenv(https://github.com/benfogle/crossenv)环境下交叉编译。 2. 编译环境搭建 创建…

自编C++题目——水龙头

预估难度 简单 题目描述 有个水龙头&#xff0c;其中有一些坏了的&#xff08;用表示&#xff09;&#xff0c;还有一些能用的&#xff08;用表示&#xff09;&#xff0c;那么有多少个能用的&#xff1f; 输入格式 第一行&#xff1a;整数&#xff0c;表示水龙头的个数&a…

SpringBoot 解决 getReader() has already been called for this request

一、getReader()问题分析 1、获取请求参数的方式 对于 GET 请求和 POST 表单请求&#xff0c;参数都是包含在 URL 查询字符串中的&#xff0c;因此在拦截器中都可以通过使用 request.getParameter(“paramName”)来获取这些参数。 对于 POST JSON 请求&#xff0c;参数通常包…

【Vue】mvc,mvp,mvvm 的区别

总结&#xff1a; MVC : view 视图层依靠 model 来进行更新渲染&#xff0c;当数据发生改变时。第一步: 通知 controller 进行更新&#xff0c;然后第二步 controller 再通知 model 进行更新。最后 model 才将 view 更新 , 这样大量的逻辑以及更新操作&#xff0c;都需要在con…

2024.2.3每日一题

LeetCode 石子游戏 VII 1690. 石子游戏 VII - 力扣&#xff08;LeetCode&#xff09; 题目描述 石子游戏中&#xff0c;爱丽丝和鲍勃轮流进行自己的回合&#xff0c;爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中&#xff0c;可以从行中 移除 最左边的石头或最右…

【已更新】2024美赛C题代码教学思路数据处理数学建模分析Momentum in Tennis

问题一完整的代码已给出&#xff0c;预计2号晚上或者3号凌晨全部给出。 代码逻辑如下&#xff1a; C题第一问要求我们开发一个模型&#xff0c;捕捉得分时的比赛流程&#xff0c;并将其应用于一场或多场比赛。你的模型应该确定哪名球员在比赛的特定时间表现得更好&#xff0c;…

C系列-动态内存管理

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” 目录 为什么要有动态内存分配 malloc和free malloc free calloc和realloc calloc realloc 常见的动态内存的错误 对NULL指针的解引用操作 ​编辑 对动态开辟空间的越界访问…

Three.js学习3:第一个Three.js页面

一、一图看懂Three.js 坐标 这个没什么好说的&#xff0c;只是需要注意颜色。在 Three.js 提供的编辑器中&#xff0c;各种物体的坐标也这样的色彩&#xff1a; 红色&#xff1a;x 轴 绿色&#xff1a;y 轴 蓝色&#xff1a;z 轴 Three.js 提供的编辑器可以在本地 Three.js …