Flask入门---@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>/') 表示输入的urlblog或者为infor都用url_path接收,id是参数,用来接收数据。

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

  • 87
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
`@app.route` 和 `@blog.route` 是 Flask Web 框架中的装饰器,用于定义路由和视图函数。 `@app.route` 是 Flask 应用程序对象 `app` 的装饰器,用于定义全局的路由和视图函数。它可以在应用程序的顶层中使用,用于处理整个应用程序的路由。例如: ```python from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' if __name__ == '__main__': app.run() ``` 在上面的示例中,`@app.route('/')` 定义了根路径 `/` 的路由,并将其与 `index` 视图函数关联。 `@blog.route` 是蓝图对象 `blog` 的装饰器,用于定义特定模块或功能的路由和视图函数。蓝图是一种用于组织和管理 Flask 应用程序的模块化方式。通过使用蓝图,你可以将应用程序划分为多个模块,每个模块具有自己的路由和视图函数。例如: ```python from flask import Blueprint blog = Blueprint('blog', __name__) @blog.route('/') def index(): return 'Welcome to the blog!' @blog.route('/post/<int:post_id>') def show_post(post_id): return f'Showing post {post_id}' # 在应用程序中注册蓝图 app.register_blueprint(blog, url_prefix='/blog') ``` 在上面的示例中,`@blog.route('/')` 定义了蓝图 `blog` 的根路径 `/` 的路由,并将其与 `index` 视图函数关联。通过在应用程序中注册蓝图,并指定 URL 前缀为 `/blog`,我们可以将所有与博客相关的路由都放置在 `/blog` 路径下。 总结来说,`@app.route` 用于定义全局的路由和视图函数,而 `@blog.route` 用于定义蓝图的路由和视图函数。它们的区别在于作用范围和组织方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Philo`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值