路由变量
通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量,当访问URL时,URL中的值会被解析到视图函数的变量中。
from flask import Flask
app = Flask(__name__)
@app.route('/hi/<name>')
def say_hi(name):
return 'hi,{}!'.format()
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
如上例,在say_hi
函数指定的路由中通过尖括号定义了name变量,当通过URL在浏览器访问时,路径/hi/
后的字符串会被当做name的变量值传递给say_hi
函数。
通过浏览器访问http://127.0.0.1:5000/hi/bob:

可以看到URL后的
bob
被解析成了变量值。
转换器
为了类型使用方便,flask提供了几种常用的类型转换器,可以将变量值转换成具体的类型。只需要在<variable_name>
的基础上添加上的相应的类型转换器即可:<converter:variable_name>
。
如果不添加任何转换器,默认使用string转换器。
转换器类型:
类型 | 作用 |
---|---|
string | (缺省值) 接受任何不包含斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点数 |
path | 类似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
以int转换器为例,定义路由中的int类型变量a
和b
,并在视图函数中输出a+b的值。
from flask import Flask
app = Flask(__name__)
@app.route('/hi/<int:a>/<int:b>')
def say_hi(a, b):
return '{0}+{1}={2}'.format(a, b, a+b)
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
浏览器访问http://127.0.0.1:5000/hi/3/4
:

如果URL中传入的变量值不符合转换器的类型,则返回404页面:

网友评论