Flask路由

Posted wanglan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask路由相关的知识,希望对你有一定的参考价值。

@app.route()

methods:当前url地址,允许访问的请求方式

@app.route("/info", methods=["GET", "POST"])
def student_info():
    stu_id = int(request.args.get("id"))
    return f"{stu_id}"  # Python3.6的新特性 f"{变量名}"

endpoint:反向生成url地址,默认为视图函数名,导入url_for

from flask import Flask, url_for

app = Flask(__name__)


@app.route("/index",methods=["POST","GET"],endpoint="index_s")
def index():
    return url_for("index_s")  #index

if __name__ == __main__:
    app.run(debug=True)

strict_slashes:url地址结尾符"/"的控制,默认为True:结尾不能的"/",False:无论结尾是否有"/"均可以访问

from flask import Flask, url_for

app = Flask(__name__)

#访问地址 /index
@app.route("/index",strict_slashes=True)
def index():
    return url_for("index_s")

#访问地址:/login 或 /login/
@app.route("/login",strict_slashes=False)
def login():
    return 欢迎

if __name__ == __main__:
    app.run(debug=True)

defaults : 视图函数的参数默认值{"nid":1}

from flask import Flask, url_for

app = Flask(__name__)


@app.route("/index", defaults={"nid": 1})
def index(nid):
    print(nid)
    return "哈喽"


if __name__ == __main__:
    app.run(debug=True)

redirect_to:url地址重定向,301永久重定向,在进入视图函数之前跳转

from flask import Flask, url_for

app = Flask(__name__)


@app.route("/index", redirect_to="/login")
def index(id):
    print(id)
    return "光临"


@app.route("/login")
def login():
    return 欢迎


if __name__ == __main__:
    app.run(debug=True)

动态路由参数

接受文件名,返回文件

<int:id>:只能是数字

from flask import Flask, url_for

app = Flask(__name__)

@app.route("/index/<int:a>",) #访问 http://127.0.0.1:5000/index/1
def index(a):
    print(a)  # 1
    return "光临"

if __name__ == __main__:
    app.run(debug=True)

<string:str>:可以是数字也可以是字符串

from flask import Flask, url_for

app = Flask(__name__)


@app.route("/index/<string:str>",)
def index(str):
    print(str)
    return "光临"

if __name__ == __main__:
    app.run(debug=True)

也可以不用定义类型,默认接受字符串

from flask import Flask, url_for

app = Flask(__name__)


@app.route("/index/<name>",)
def index(name):
    print(name)
    return "光临"

if __name__ == __main__:
    app.run(debug=True)

 

以上是关于Flask路由的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

flask源代码笔记——路由

flask源代码笔记——路由

Flask系列 路由系统

Flask路由之重定向

flask路由规划蓝图和route