美文网首页FLASK入门
Flask 路由执行顺序

Flask 路由执行顺序

作者: 大白杏仁 | 来源:发表于2018-01-24 23:42 被阅读89次

GitHub 文章链接

Flask 中,当服务器接收到请求后需要进行路由分发,从而能执行不同视图函数。但是当一个 py 文件中出现以下代码,究竟谁执行哪个函数?

@app.route("/test")
def test():
    ...
@app.route("/<to>")
def page(to):
    ...

不管这两个函数写的顺序如何,当请求 /test 路径时只会进入路由为 @app.route("/test") 的函数中。

众所周知, Flask 利用 Werkzeug 处理路由分发,它根据路由中有多少变量来决定路由顺序。/test 中没有变量,/<to> 中有一个变量,所以每次路由都会进入 /test。其实排序是根据 Rule.match_compare_key() 方法,看官方文档注释:

def match_compare_key(self):
    """The match compare key for sorting.

    Current implementation:

    1.  rules without any arguments come first for performance
        reasons only as we expect them to match faster and some
        common ones usually don't have any arguments (index pages etc.)
    2.  The more complex rules come first so the second argument is the
        negative length of the number of weights.
    3.  lastly we order by the actual weights.

    :internal:
    """

为了获得更高的性能,让路径匹配得更快,优先匹配路由中变量较少的,接着根据权重。另外,静态路径权重 > 动态路径权重,同样地会先匹配更短的路径;转换器 converter 也会影响权重,权重从高到低为:数字转换器 -> 基于字符串的转换器 -> 其他转换器。

❄️❄️❄️❄️❄️❄️下雪啦❄️❄️❄️❄️❄️❄️

相关文章

  • Flask 路由执行顺序

    GitHub 文章链接 在 Flask 中,当服务器接收到请求后需要进行路由分发,从而能执行不同视图函数。但是当一...

  • 关于flask路由的思考

    flask路由 在使用flask时,我们设置路由的方式通常为: 问题来了, 我们并没有执行定义的函数,那么app....

  • koa中间件

    应用级中间件 路由中间件(同样一个路由,分步执行不同的操作) 错误中间件(注意代码的执行顺序) 中间件的执行顺序

  • Python学习

    python-flask框架学习(二) 1、回顾Flask 2、Flask route路由 2.1、静态路由 ap...

  • laravel 资源路由,路由顺序

    路由顺序错误: 正确: 首先路由会在路由文件里进行匹配, 如果匹配成功就会立即返回,不再往下执行。 borrowi...

  • 深入理解Flask路由的实现机制

    本篇介绍 Flask 路由的基本用法,并且通过部分源代码深入浅出阐述 Flask 路由的实现机制。 路由的基本用法...

  • Flask路由系统

    通常有3种定义路由函数的方法: 使用flask.Flask.route() 修饰器。 使用flask.Flask....

  • Sanic学习(二) - 基础

    路由 路由方面其实和flask很类似,flask不熟悉的话可以去看看我前面关于flask的基础教程 但是这里有一点...

  • Flask结合dropzone实现大文件分片传输

    upload.html flask后端路由

  • Python操作三大数据库(3)-实战Flask-ORM

    flask入门 安装 Flask 更多请查看 Flask帮助文档>> 快速入门 建立模型 建立Form验证 建立路由

网友评论

    本文标题:Flask 路由执行顺序

    本文链接:https://www.haomeiwen.com/subject/oxbsaxtx.html