Flask 变量规则
通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为<variable-name>。它作为关键字参数传递给与规则相关联的函数。
先来一个简单的示例说明一下上面的这句话是什么意思:
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask (__name__)
@app.route ('/<name>')
def hello(name):
return 'hello %s' % name
if __name__ == '__main__':
app.run ()
我们的route这里是一个name变量,所以我们在浏览器输入任何的字符串,他都会被赋值给实际的view,这里就赋值给了hello方法,这样就做到了根据不同的请求地址,返回相应的结果
除了默认字符串变量部分之外,还可以使用以下转换器构建规则:
序号 | 转换器和描述 |
---|---|
1 | int 接受整数 |
2 | float 对于浮点值 |
3 | path 接受用作目录分隔符的斜杠 |
唯一的不同在于:如果你要传入的是整数,这里要改成app.route('/<int:score>'),同理,浮点数就是float
这里稍微讲一下path,我们来把上面代码稍微改造一下,做个小小的实验
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask (__name__)
@app.route ('/<path:name>')
def hello(name):
return 'hello %s' % name
if __name__ == '__main__':
app.run ()
好了,我们现在进行测试
第一段代码,我们在浏览器输入http://127.0.0.1:5000/louishu/121212dsasasashuiuqewdhueiw
测试结果:
第二段代码测试结果:
结论:使用path构造, 后面无论是否有‘/’分隔符,我们都可以将它作为一个path字符串传给方法来使用,我们只需要在path前后做到完全匹配就可以适配该路由。
Flask的URL规则基于Werkzeug的路由模块。这确保形成的URL是唯一的,并且基于Apache规定的先例。
考虑以下脚本中定义的规则:
@app.route('/flask')
@app.route('/flask/')
这两个规则看起来类似,但在第二个规则中,最后增加了一个/。因此,它成为一个规范的URL。
系统会默认帮你在最后加上/,所以你输入flask和flask/都可以匹配,但是在第一条规则里面,如果你输入flask/,那么系统将会返回给你的只有404--------not found。