Flask 删除通过 add_url() 添加的路由

5 投票
1 回答
6017 浏览
提问于 2025-04-18 09:12

在应用程序初始化的时候,我是从数据库里动态加载网址,并用 app.add_url() 来添加这些网址。因为这个应用的行为像个内容管理系统(CMS),所以我的用户可以删除或更改某些页面的网址。因此,有时候我需要删除一个网址的映射,或者重新加载所有的网址映射。

有没有人知道怎么做到这一点?

谢谢

1 个回答

3

Flask是一个框架,它依赖于Werkzeug,主要是为了让用户方便地添加路由,而不是删除路由。不过,如果你想自己删除路由也是可以的;每个路由都是通过Flask.add_url_rule()这个方法添加到url_map里的。要删除一个路由,可能只需要从Map._rulesMap._rules_by_endpoint中移除它(可以参考Map.add()这个方法),然后调用Map.update()并传入_remap

但是,这种方法并不总是有效,比如当你创建一个路由,并且这个路由指向一个在另一个dict里的视图函数时:

    _routes = {}

    @app.route('/<path:url>', methods=['GET', 'POST'])
    def route(url):
        handler = _routes.get(url, None)
        if handler is not None:
            return handler()
        abort(404)

撰写回答