python - 获取 Flask 应用程序中定义的所有路由列表

标签 python flask

我有一个基于 Flask 的复杂网络应用。有许多带有 View 功能的单独文件。它们的 URL 使用 @app.route('/...') 装饰器定义。有没有办法获取在我的应用程序中声明的所有路线的列表?也许我可以在 app 对象上调用一些方法?

最佳答案

应用程序的所有路由都存储在 app.url_map这是 werkzeug.routing.Map 的一个实例.您可以遍历 Rule使用 iter_rules 的实例方法:

from flask import Flask, url_for

app = Flask(__name__)

def has_no_empty_params(rule):
    defaults = rule.defaults if rule.defaults is not None else ()
    arguments = rule.arguments if rule.arguments is not None else ()
    return len(defaults) >= len(arguments)


@app.route("/site-map")
def site_map():
    links = []
    for rule in app.url_map.iter_rules():
        # Filter out rules we can't navigate to in a browser
        # and rules that require parameters
        if "GET" in rule.methods and has_no_empty_params(rule):
            url = url_for(rule.endpoint, **(rule.defaults or {}))
            links.append((url, rule.endpoint))
    # links is now a list of url, endpoint tuples

Display links to new webpages created了解更多信息。

关于python - 获取 Flask 应用程序中定义的所有路由列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13317536/

相关文章:

python - 如何使用带有 Flask 的 jinja 将 url 传递给 img 标签

python - scrapy重定向到127.0.0.1

python - 如何在Python中拟合具有偏正态分布的混合模型?

python - 在模板中调用 Flask 函数

python - Peewee MySQL 服务器已经消失

python - Flask-WhooshAlchemy 与现有数据库

android - 如何在 Android 上优雅地关闭 kivy 应用程序?

Python:在后台运行带重定向的bash命令并获取进程ID

python - 重用Mock创建属性模拟unittest.patch

python - 使用 Plesk 在 Apache 下运行 Flask 应用程序