flask中的路由系统,其实就是@app.route()中的各种参数
1, methods : 当前url地址,允许访问的请求方式
@app.route("/login",methods=["POST","GET"]) #当前允许post和get请求 def login(): if request.method == "GET": return render_template("login.html")
2, endpoint : 反向url地址,默认为视图函数名(url_for),也可以解决flask中双层装饰器的问题
@app.route("/",endpoint="a2") def index(): print(url_for("a2")) return render_template("index.html")
3, 动态路由参数: 在函数里面一定要给一个参数
@app.route("/book/<page>",methods=["POST","GET"]) def book(page): if request.method == "GET": return render_template("book.html") #可以给尖括号里面的参数指定类型,例如<int:nid> 指定必须是一个数字,如果是字母或者其他的都会报错,但是如果指定为<str:nid>的话,是会匹配到数字的,什么都不写,默认为str,所以我们用的时候默认什么都不写的
4, defaults : 视图函数的默认参数
from flask import url_for @app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100}) def student_info(nid): print(url_for("r_info")) # /info # stu_id = int(request.args["id"]) print(nid) # 100 return
5, strict_slashes=True 是否严格遵循路由地址
False : 无论结尾 "/" 是否存在均可以访问 ,
True : 结尾必须不能是 "/"
6, redirect_to="/login" 永久重定向 301
# 访问地址 : /info 浏览器跳转至 /infos @app.route("/info", strict_slashes=True, redirect_to="/infos") def student_info(): return "Hello Old boy info" @app.route("/infos", strict_slashes=False) def student_infos(): return "Hello Old boy infos"
浙公网安备 33010602011771号