Flask之路由系统
2024-09-03 17:07:00
路由系统
路由的两种写法
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也支持自定义的正则表达式的路由
最新文章
- 锋利的jQuery-读书笔记(二)
- ASP开发中服务器控件和普通控件的区别
- 【转】玩转log4j
- Sql日期时间格式转换;取年 月 日,函数:DateName()、DATEPART()
- hdu 4738
- iOS屏蔽高频点击技巧
- 【创业积累】如何快速开发出一个高质量的APP
- Batch Normalization原理
- Python 正则表达式相关问题
- kafka学习笔记整理01
- python-模块的导入import
- Java 中 synchronized的用法详解(四种用法)
- 转: linux进程地址图解
- vc++之stdafx.h
- Windows中的时间(SYSTEMTIME和FILETIME) (转载)
- scala-- 内建控制结构
- js实现拉伸拖动iframe的具体代码
- kafka集群与zookeeper集群 配置过程
- ubuntu 18.04 - server版 开机启动脚本
- 关于单一网络适配器拓扑TMG