Flask之路由系统
路由系统
路由的两种写法
1.第一种方法:
def index():
return render_template('index.html')
app.add_url_rule('/index', 'index', index) 2. 公司里一般用这种方式
@app.route('/login')
def login():
return render_template('login.html')
解析
1. 第一种方法中执行"add_url_rule"方法,这个方法里边需要的参数解析:
def add_url_rule(
self,
rule,
endpoint=None,
view_func=None,
provide_automatic_options=None,
**options
):
self:是当前这个app对象;
rule: 当前这个路由:'/login'
endpoint: 当前这个视图的别名;
view_func: 指定执行的视图函数 2.第二种:@app.route('/login'),第二种的这个方法其实内部都是调用了"add_url_rule"这个方法;内部实现都是一样的。
路由加载的源码流程
- 将url和函数打包成为 rule 对象
# rule = self.url_rule_class(rule, methods=methods, **options)
- 将rule对象添加到map对象中。
# self.url_map.add(rule)
- app.url_map = map对象
# self.url_map = self.url_map_class()
动态路由
@app.route('/login')
def login():
return render_template('login.html') @app.route('/login/<name>')
def login(name):
print(type(name))
return render_template('login.html') @app.route('/login/<int:name>')
def login(name):
print(type(name))
return render_template('login.html')
支持正则表达式的路由
from flask import Flask,render_template app = Flask(__name__) from werkzeug.routing import BaseConverter
class RegConverter(BaseConverter):
def __init__(self, map, regex):
super().__init__(map)
self.regex = regex
app.url_map.converters['regex'] = RegConverter @app.route('/index/<regex("\d+"):x1>')
def index(x1):
return render_template('index.html') if __name__ == '__main__':
app.run()
DEFAULT_CONVERTERS = {
"default": UnicodeConverter,
"string": UnicodeConverter,
"any": AnyConverter,
"path": PathConverter,
"int": IntegerConverter,
"float": FloatConverter,
"uuid": UUIDConverter,
}
1. flask中提供了这些动态路由的方法,针对不同的值有着不同的操作方法,装换成不同的类型值;
2. 并且flask也支持自定义的正则表达式的路由
Flask之路由系统的更多相关文章
- Flask最强攻略 - 跟DragonFire学Flask - 第七篇 Flask 中路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- Flask中路由系统以及蓝图的使用
一.Flask的路由系统 1.@app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route("/info", methods=[ ...
- Flask 的路由系统 FBV 与 CBV
Flask的路由系统 本质: 带参数的装饰器 传递函数后 执行 add_url_rule 方法 将 函数 和 url 封装到一个 Rule对象 将Rule对象 添加到 app.url_map(Map对 ...
- 源码解析flask的路由系统
源码解析flask的路由系统 当我们新建一个flask项目时,pycharm通常已经为项目定义了一个基本路由 @app.route('/') def hello_world(): return 'He ...
- 第七篇 Flask 中路由系统以及参数
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
- 第七篇 Flask 中路由系统
1. @app.route() 装饰器中的参数 如果不明白装饰器 点击这里 methods : 当前 url 地址,允许访问的请求方式 @app.route("/info", me ...
- 7,Flask 中路由系统
Flask中的路由系统 @app.route("/",methods=["GET","POST"]) 为什么要这么用?其中的工作原理我们知道 ...
- flask框架路由系统
flask框架的url系统: flask框架的路由系统: flask框架的路由系统使用实例化的route方法来指定: 如: @app.route('/') route函数装饰器可以把一个函数绑定到对应 ...
- Flask 之路由系统
Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用 @app.route("/",methods=["GET","POST" ...
随机推荐
- 网络编程-python实现-socket(1.1.1)
@ 目录 1.不同电脑进程之间如何通信 2.什么是socket 3.创建socket 1.不同电脑进程之间如何通信 利用ip地址 协议 端口 标识网络的进程,网络中的进程通信就可以利用这个标志与其他进 ...
- 302跳转导致的url劫持
介绍一个 网站监测工具:iis7网站监测IIS7网站监控工具可以做到提前预防各类网站劫持,并且是免费在线查询,适用于各大站长,政府网站,学校,公司,医院等网站.它可以做到24小时定时监控,同时它可 ...
- Core3.0使用Swagger接口文档
前言 此方法为百度搜索结果,原文链接找不到了 步骤 1.引用Nuget Swashbuckle.AspNetCore 2.Startup.cs配置 //注册swagger服务,定义1个或者多个swag ...
- 管理Windows上的路由表
路由器获取目录帮助手册: route /? 修改路由的时候最高以管理员运行cmd程序 默认路由只是临时生效的,只要管理员禁用在启用网卡,默认路由就消失了(重启计算机默认路由也会消失),可以在后面添加一 ...
- Python-对比参考目录查找多个文件夹中不同的文件
改完文件名称后,Dr.he 发现分别保存5个状态的jpg 文件的文件夹出现缺少文件的情况.为了让他少熬夜查找缺失文件,结合网友分享的脚本,写了查找以下代码,满足他的需求,也以防自己忘记.以下代码能解决 ...
- Android基础工具移植说明
早前开展的计划因各种杂事而泡汤,而当遇到了具体任务后,在压力下花了两个多周的业余时间把这件事完成了. 这就是我的引以为傲的Mercury-Project,它的核心目标是移植一些Android底层轮子到 ...
- Xtrabackup备份与恢复
一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...
- 这4种ThreadLocal你都知道吗?
什么是ThreadLocal ThreadLocal类顾名思义可以理解为线程本地变量.也就是说如果定义了一个ThreadLocal, 每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会 ...
- 看完这篇,保证让你真正明白:分布式系统的CAP理论、CAP如何三选二
引言 CAP 理论,相信很多人都听过,它是指: 一个分布式系统最多只能同时满足一致性(Consistency).可用性(Availability)和分区容错性(Partition tolerance) ...
- 阿里云ssl证书过期怎么解决 (免费SSL证书) 三步解决
阿里云ssl证书过期怎么解决(免费SSL证书),三步解决 使用免费的SSL证书网站 https://ohttps.com 1.注册帐号 2.申请证书 3.部署到阿里云 4.注意事项 1.注册帐号 到 ...