Flask--路由系统
路由系统
- flask的路由有两种写法:
第一种:装饰器形式(推荐)
@app.route("/index")
def index():
return "ok"
第二种:
def index():
return "ok"
app.add_url_rule('/index','index',index)
- 路由加载流程
1.执行装饰器的route方法,返回decorator方法
2.把视图函数当做参数传进decorator方法并执行
3.执行add_url_rule方法
4.将rule对象添加到map中
5.app.url_map是map对象
- 动态路由
from flask import Flask, session
app = Flask(__name__)
@app.route("/index/<int:num>") # 获取参数
def index(num): # 接收参数
return "ok"
if __name__ == '__main__':
app.run()
支持正则表达式的路由(扩展)
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()