Flask 中的路由系统(flask官网)

网友投稿 331 2022-08-01

1.methods允许请求的方法

methods : 当前 url 地址,允许访问的请求方式,默认不写为GET方法

@app.route("/info", methods=["GET", "POST"])

def student_info():

stu_id = int(request.args["id"])

return f"Hello Old boy {stu_id}" # Python3.6的新特性 f"{变量名}"

2.endpoint url的反向解析

endpoint : 反向url地址,默认为视图函数名 (url_for)

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info")

def student_info():

print(url_for("r_info")) # /info

stu_id = int(request.args["id"])

return f"Hello Old boy {stu_id}" # Python3.6的新特性 f"{变量名}

3.defaults默认参数

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

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})

def student_info(nid): #这里形参必须有个nid接收

print(url_for("r_info")) # /info

# stu_id = int(request.args["id"])

print(nid) # 100

return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"

4.strict_slashes url结尾界定符匹配

strict_slashes : url地址结尾符"/"的控制 False : 无论结尾 "/" 是否存在均可以访问 , True : 结尾必须不能是 "/"

# 访问地址 : /info

@app.route("/info", strict_slashes=True)

def student_info():

return "Hello Old boy info"

# 访问地址 : /infos or /infos/

@app.route("/infos", strict_slashes=False)

def student_infos():

return "Hello Old boy infos"

5.redirect_to url地址重定向

redirect_to : url地址重定向,且为308永久重定向

# 访问地址 : /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"

6.subdomain 子域名

subdomain : 子域名前缀 subdomian="cnblogs" 这样写可以得到 cnblogs.aspx.com 前提是app.config["SERVER_NAME"] = "aspx.com"

app.config["SERVER_NAME"] = "aspx.com"

@app.route("/info",subdomain="cnblogs")

def student_info():

return "Hello cnblogs info"

# 访问地址为: cnblogs.aspx.com/info

7.动态参数路由

int:nid 就是在url后定义一个参数接收

但是这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常

from flask import url_for

# 访问地址 : http://127.0.0.1:5000/info/1

@app.route("/info/", methods=["GET", "POST"], endpoint="r_info")

def student_info(nid):

print(url_for("r_info",nid=2)) # /info/2

return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"

多个参数传递:

from flask import url_for

# 访问地址 : http://127.0.0.1:5000/info/1

@app.route("/info//", methods=["GET", "POST"], endpoint="r_info")

def student_info(nid):

print(url_for("r_info",nid=2,nid=3)) # /info/2/3

return f"Hello Old boy {nid}" # Python3.6的新特性 f"{变量名}"

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Flask 中内置的 Session 应用(flask和django的对比)
下一篇:Flask的实例化参数及对app的配置(flask实现)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~