首页 > 解决方案 > 如何从 url 规则中过滤蓝图 url?

问题描述

我想制作网站菜单并允许管理员从flask-admin中的已知url中选择我有主蓝图并且它有一些端点,我想制作一个函数,它将返回菜单模型的已知端点供管理员选择正确的url和用数据打包它。

我在 app.url_map.iter_rules() 中尝试了 for 循环规则:

@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(rule.endpoint)

    return render_template("all_links.html", links=links)

但是上面的代码也给了我烧瓶管理员的所有路线

标签: flask

解决方案


只需添加一个额外的测试来过滤掉端点admin.

if "GET" in rule.methods \
  and has_no_empty_params(rule) \
  and not rule.endpoint.startswith("admin."):
    # Add link to list of links

推荐阅读