路由的变量规则
- 意思是说在路由当中允许出现变量,变量不同结果就是不同的,下面我通过一个例子讲解。如下代码:
from flask import Flask, Response
import setting
app = Flask(__name__)
app.config.from_object(setting)
@app.route('/')
def hello_world():
return 'Hello World!'
data = {"1": "北京", "2": "上海", "3": "深圳"}# 路由变量规则
@app.route("/getcitv/<gid>")
def getcitv(gid):
print(type(gid)) # 默认是str类型,不能指定是str 否则就会报错
return f"这是{data[gid]}"
if __name__ == '__main__':
app.run()
- 当我们在装饰器路由里面写< num >时下方的视图函数也必须要接收num不然会报黄,我们可以指定变量类型,默认是str类型不能指定是str类型会报错,指定类型语法如下:
@app.route("/add/<int:num>")# 乌龟的屁股规定语法 int:
def num(num):
return str(num + 10) # 不转换类型页面会500错误 string, dict, tuple, Response WSGI
- 大家可以去运行终端运行这个flask文件去试试这两个路由,支持的变量类型如下图其中的uuid用的地方不多如果想了解可以去搜索一下:
路由的匹配规则
这里就简单给大家一下直接看代码:
# 所有的路由搜索规则都是自上而下搜索,在写路由的是有定义的路由是唯一的。
@app.route('/projects') # 请求路由中如果添加了/:http://127.0.0.1:5000/about/ 显示Not Found
def about():
return 'The about page'
@app.route('/projects/') # 路由中定义'/',无论请求的URL是否带有/,都可以执行视图函数。如果请求的是有/,浏览器做了一次重定向
def projects():
return 'The project page'
大家简单记住在flask中定义路由中如果我们加“ / ” 了我们可以不用在浏览器中添加 / 会默认跳转到,反之我们没有加“ / ”浏览器中我们也不能添加,否则会显示Not Found不存在。这里跟django是不一样的。