路由
使用route()装饰器将函数绑定到URL。
@app.route('/')
def index():
return 'Index Page'
@app.route('/hello')
def hello():
return 'Hello, World'
您也可以将URL的一部分动态化并将多个规则附加到函数
变量规则
您可以通过使用标记部分向URL添加变量部分 <variable_name>
。然后,您的函数将接收<variable_name>
作为关键字参数。或者,您可以使用转换器指定参数的类型<converter:variable_name>
。
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return 'Subpath %s' % subpath
转换器类型:
类型 | 说明 |
---|---|
string | (默认值)接受任何没有斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点值 |
path | 可接受字符串或者带斜杠的文本 |
uuid | 接受UUID字符串 |
URL构建
路由生成:{{ url_for(“模块名.视图名”) }}
url重定向: redirect(‘/home/login’)
redirect(url_for(“home.home_login”))
HTTP方法
默认情况下,路由仅响应get请求,可以使用route()装饰器中methods参数来处理不同的HTTP方法
from flask import request
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
return do_the_login()
else:
return show_the_login_form()