flask路由
引子:
与django 的路由不同的是,flask是基于装饰器实现的,最终还是通过add_url_rule 来实现的
代码:
# -*- coding: utf-8 -*-
"""
@author:yuan_x
@software:PyCharm
@file:flask_route_stu.py
@time:2021/1/31 8:26 下午
"""
"""
常用的路由系统
@app.route("/user/<username>")
@app.route("/post/<int:id>")
@app.route("/user/<float:id>")
@app.route("/user/<path:path>")
@app.route("/login",methods=["GET","POST"])
常用的路由系统有以上5种,所有的路由系统都是给予一下对应关系来处理
DEFAULT_CONVERTERS={
"default":UnicodeConverter,
"string":UnicodeConverter,
"any":AnyConverter,
"path":PathConverter,
"int":IntergerConverter,
"float":FloatConverter,
"uuid":UUIDConverter
}
"""
from flask import Flask
app=Flask(__name__)
"""
route 源码解析
1 decorator=app.route('/',methods=["GET","POST"],endpoint="test1")
本质上就是装饰器
def route(self, rule, **options):
# self==== app 对象
# rule=/
# options={methods=["GET","POST"],endpoint="test1"}
def decorator(f):
endpoint = options.pop("endpoint", None)
self.add_url_rule(rule, endpoint, f, **options) 其实就是把路由注册进去
return f
return decorator
2 @decorator=====》decorator(index)
"""
@app.route('/',methods=["GET","POST"],endpoint="test1")
def index():
return "hello world"
def login():
return "login success"
# 同上方注释中的 self.add_url_rule(rule, endpoint, f, **options)
# 如果endpoint 为None 那么flask会将函数名字作为endpoint methods不写同样默认是GET
# 可以加很多 类似 django 的路由了
app.add_url_rule("/login","test2",login,methods=["GET","POST"])
if __name__ == '__main__':
app.run()
add_url_rule源码部分
1 endpoint


2 method部分

app.route部分


浙公网安备 33010602011771号