(5)Flask 变量规则

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。

发布了62 篇原创文章 · 获赞 36 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/louishu_hu/article/details/103153486
今日推荐