Flask路由本质以及参数
from flask import Flask,url_for,redirect
app = Flask(__name__)
# @app.route("/")
def index(nid):
print(nid,type(nid))
return "ojbk"
# @app.route的本质就在执行add_url_rule,这个中的rule是路由,endpoint是路由别名,view_func是响应函数
# 如果endpoint不传就是响应的函数名
# <int:nid>里的int表示传过来参数的类型,这里的nid必须和上面index视图函数传过来的形参一致
# methods,可以控制该方法能有哪些请求方式可以访问
app.add_url_rule("/index/<int:nid>", endpoint="index1",view_func=index,methods=["POST","GET"])
@app.route("/login",methods=["POST"])
def login():
#用endpoint取路由要用url_for 在flask中导入,也就是反向解析
print(url_for("index1"))
# return redirect(url_for("index1"))
if __name__ == '__main__':
app.run()
'''
总结:
1 @app.route("/login") 的本质app.add_url_rule("/login",view_func=login),所以我们就可以用这两个方式来添加路由
2 路由的参数,
2.1 endpoint,做是反向解析,如果上面添加路由的时候,没有传递endpoint就是使用响应函数的函数名,反向解析用url_for()做解析,这个url_for必须在flask里面导入
2.2 methods=["POST","GET"],该参数控制路由允许哪些请求方法访问,如果不传,默认只能GET方法
2.3 路由以及路由路由转化器。"/index/<int:nid>",<参数的类型:用哪个变量来接收>,响应函数中的形参的名字必须转化器中一致。
'''