客户端(例如 Web 浏览器)把请求发送给 Web 服务器,Web 服务器再把请求发送给 Flask 程序实例。程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到 Python 函数的映射关系。处理 URL 和函数之间关系的程序称为路由
。
在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route
修饰器,把修 饰的函数注册为路由。
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
像 index() 这样的函数称为视图函数
(view function)。
传递参数
传递参数的语法是:"/<参数名>/",然后在视图函数中,也要定义同名的参数
converter:variable_name,其中converter就是类型名称
类型 | 说明 |
---|---|
string | 默认的数据类型,接受没有任何斜杠"/"的文本 |
int | 接受整型 |
float | 接受浮点类型 |
path | 和string的类似,但是接受斜杠 |
uuid | 只接受uuid字符串(唯一,长度过长) |
any | 可以指定多种路径。 |
'any’数据类型可以在一个"url"中的指定多个路径
eg:
from flask import Flask, config
app = Flask(__name__)
@app.route('/<any(blog,user):url_path>/<id>')
def detail(url_path,id):
if url_path == "blog":
return "博客详情:%s" % id
else:
return "用户详情:%s" % id
if __name__ == '__main__':
app.run(host="0.0.0.0", port="8899", debug=True)
URL 与视图函数中两种方式传参方式
- 第一种:使用 path 的形式(将参数嵌入到路径中)
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s!</h1>' % name
- 第二种:使用查询字符串的方式,就是通过 “?key=value” 的形式传递的
@app.route('/user/')
def user():
username = request.args.get("name")
return f"当前登录用户为:{username}!欢迎登录!!!"