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"