文章目录
- 一、@app.route()是什么?
- 二、基础理解
- 三、URL写法细则
- 四、带参数的@app.route()
- 五、通过?进行参数拼接 传递
- 六、选择路由跳转
一、@app.route()是什么?
- 在Python中,只要是带着
@
的,基本上就是装饰器,装饰器的本质是扩展原本函数功能的一种函数,详见另一篇文章《Python自定义装饰器》- 而这里的
app.route('URL')
就是在Flask框架中非常重要的一个装饰器,它的作用是在程序运行时,装饰一个视图函数,用给定的URL规则和选项注册它,这里不理解也无所谓,能用即可。
二、基础理解
举例1:
1.首先我们导入了 Flask 类。该类的实例将会成为我们的 WSGI 应用(和路由注册有关)。
2.接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。 name 是一个适用于大多数情况的快捷方式。有了这个参数, Flask 才能知道在哪里可以找到模板和静态文件等东西。
3.然后我们使用 route() 装饰器来告诉 Flask 触发函数 的 URL 。
4.函数返回需要在用户浏览器中显示的信息。默认的内容类型是 HTML ,因此字 符串中的 HTML 会被浏览器渲染。
举例2:
- 从这里可以大胆猜测,
@app.route('URL')
的功能,就是程序运行起来,然后输入这里的URL
,页面上显示函数的return
值。建议:
尽量保持route()
内的URL
和被修饰的函数名相同,这样就可以大大避免在同一文件中因函数名字相同而导致程序报错。(这里URL和被修饰的函数名无本质联系,这里的建议只是一种编码习惯)
三、URL写法细则
总结:
- 在app.route(’/TestB/’)中,TestB前后有斜杆,则访问时,是否在TestB后面加斜杠,Flask都会重定向到(/TestB/)中,且访问成功,
- 若在app.route(’/TestA`),TestA后无斜杠,则在访问时,则在访问时,若访问(/TestA/),则会报错,访问(/TestA),则访问成功。
注:
若URL以非字母结尾,上面的规则会有变化,只能输入严格正确的URL才能访问成功(不要问了,问多了都是辛酸泪啊)建议:
在@app.route(’’)写入带双斜杠的URL地址。
四、带参数的@app.route()
常见的有以下的变量规则:
关键字 | 作用 |
string | 接受任何不包含斜杠的文本 |
int | 接受正整数 |
float | 接受正浮点数 |
path | 类似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
举例:
注:
这里的return
只能返回字符类型或者是字典,其余的元组,列表,整数都不能返回,所以上面的三个例子中的中间那个,用str()
强制类型转换和字符串进行拼接作为返回值的。
五、通过?进行参数拼接 传递
举例:
- 这里用到了
request
,需要在import
语句后面加入request
这个依赖;- 一般传参是用
?
进行路由和参数的拼接,多个参数之间用&
进行拼接。
六、选择路由跳转
举例:
- 这里的
('/any(blog,infor):url_path/<id>/')
表示输入的url
为blog
或者为infor
都用url_path
接收,id
是参数,用来接收数据。以上就是平时可能遇到的一些
app.route()
的一些用法,不需要刻意记忆,理解着记忆,看别人的代码,能看懂就行啦。