使用add_url()添加的Flask删除路由

时间:2014-06-09 21:16:48

标签: python flask

在app init我动态加载来自数据库的网址,并添加app.add_url()。 由于行为类似于CMS,我的用户可以删除或更改某些页面的URL,因此我有时需要删除映射或重新加载所有URL映射。

有没有人知道这样做的方法?

由于

1 个答案:

答案 0 :(得分:1)

Flask(依赖于Werkzeug)旨在让用户轻松添加而不是删除路由。但是您可以尝试自己删除路线;每条路线都会添加到Flask.add_url_rule() method中的url_map。从Map._rulesMap._rules_by_endpoint移除路线(参见Map.add()方法)并使用_remap致电Map.update()可能就足够了。

但是这通常不起作用,例如在创建一个委托给单独dict中的视图函数的路径时:

_routes = {}

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