一、路由定义
URL 以及路由
路由的过程就是通过URL地址找到对应的视图函数的过程
路由配置方式
Flask 提供了两种方式配置路由,第一种方式是使用装饰器 @app.route(uri, methods)
的方式,其中 uri 是指具体的路径,methods 是一个列表,值得是可以处理的请求类型如 GET、POST 等。
第二种方式是通过 Flask 实例调用 add_url_rule
函数配置。
app.add_url_rule(uri, uri_alias, view) 复制代码
该函数的参数中 uri 是指具体的 uri 地址,uri_alias 是指 uri 的别名,view 是指对应的视图函数的名字。
在 app.py 中使用第二种方式配置路由。
# 其余代码不变 @app.route('/') def index(): info = { 'message': "这是存在message变量中的信息" } return render_template('index.html', info=info) # 使用第二种方式给index()视图函数配置路由 app.add_url_rule('/index', 'index', index) 复制代码
保存代码,浏览器访问 /index
"/" 和 "/index" 都可以映射到 index()
视图函数上.
二、路径参数设置和获取
URL 路径中可以进行参数的传递,Flask 中 URL 参数的类型有:
- string:接收任何不包含斜杠的问题本
- int:接收正整数
- float:接收浮点数
- path:类似 string,但可以包含斜杠
- uuid:接收 uuid 字符串
在 app.py 中定义一个视图函数
@app.route('/page/<int:page_number>') def list(page_number): return '这是第{}页用户'.format(page_number) 复制代码
重启应用,访问 http://127.0.0.1:5000/page/100
定义路径中的参数时要定义参数的名字以及类型,书写视图函数时要将参数的名字作为视图函数的参数,这可以就可以通过参数名直接获取到URL传递的参数的值。
如果参数是非必填的可以设置参数的默认值。
@app.route('/page/') @app.route('/page/<int:page_number>') def list(page_number=1): return '这是第{}页用户'.format(page_number) 复制代码
重启应用,访问 http://127.0.0.1:5000/page/
url_map 属性
Flask 实例的 url_map 属性包含了所有的视图函数以及对应的 URL 地址