文章目录

  • 一、@app.route()是什么?
  • 二、基础理解
  • 三、URL写法细则
  • 四、带参数的@app.route()
  • 五、通过?进行参数拼接 传递
  • 六、选择路由跳转



一、@app.route()是什么?

  • 在Python中,只要是带着@的,基本上就是装饰器,装饰器的本质是扩展原本函数功能的一种函数,详见另一篇文章《Python自定义装饰器》
  • 而这里的app.route('URL')就是在Flask框架中非常重要的一个装饰器,它的作用是在程序运行时,装饰一个视图函数,用给定的URL规则和选项注册它,这里不理解也无所谓,能用即可。

二、基础理解

举例1:

flask python 论坛 python flask app_python

1.首先我们导入了 Flask 类。该类的实例将会成为我们的 WSGI 应用(和路由注册有关)。
2.接着我们创建一个该类的实例。第一个参数是应用模块或者包的名称。 name 是一个适用于大多数情况的快捷方式。有了这个参数, Flask 才能知道在哪里可以找到模板和静态文件等东西。
3.然后我们使用 route() 装饰器来告诉 Flask 触发函数 的 URL 。
4.函数返回需要在用户浏览器中显示的信息。默认的内容类型是 HTML ,因此字 符串中的 HTML 会被浏览器渲染。

举例2:

flask python 论坛 python flask app_后端_02

  • 从这里可以大胆猜测,@app.route('URL')的功能,就是程序运行起来,然后输入这里的URL,页面上显示函数的return值。
  • 建议: 尽量保持route()内的URL和被修饰的函数名相同,这样就可以大大避免在同一文件中因函数名字相同而导致程序报错。(这里URL和被修饰的函数名无本质联系,这里的建议只是一种编码习惯)

三、URL写法细则

flask python 论坛 python flask app_python_03


总结:

  • 在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 字符串

举例:

flask python 论坛 python flask app_斜杠_04

注: 这里的return只能返回字符类型或者是字典,其余的元组,列表,整数都不能返回,所以上面的三个例子中的中间那个,用str()强制类型转换和字符串进行拼接作为返回值的。

五、通过?进行参数拼接 传递

举例:

flask python 论坛 python flask app_flask_05

  • 这里用到了request,需要在import语句后面加入request这个依赖;
  • 一般传参是用进行路由和参数的拼接,多个参数之间用&进行拼接。

六、选择路由跳转

举例:

flask python 论坛 python flask app_python_06

  • 这里的('/any(blog,infor):url_path/<id>/') 表示输入的urlblog或者为infor都用url_path接收,id是参数,用来接收数据。

以上就是平时可能遇到的一些app.route()的一些用法,不需要刻意记忆,理解着记忆,看别人的代码,能看懂就行啦。