Flask 删除通过 add_url() 添加的路由
在应用程序初始化的时候,我是从数据库里动态加载网址,并用 app.add_url()
来添加这些网址。因为这个应用的行为像个内容管理系统(CMS),所以我的用户可以删除或更改某些页面的网址。因此,有时候我需要删除一个网址的映射,或者重新加载所有的网址映射。
有没有人知道怎么做到这一点?
谢谢
1 个回答
3
Flask是一个框架,它依赖于Werkzeug,主要是为了让用户方便地添加路由,而不是删除路由。不过,如果你想自己删除路由也是可以的;每个路由都是通过Flask.add_url_rule()
这个方法添加到url_map
里的。要删除一个路由,可能只需要从Map._rules
和Map._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)