分别设置蓝图视图的URL

时间:2019-09-23 19:40:44

标签: flask

在Flask中,我可以更改蓝图的前缀,但是有没有办法更改单个视图的URl?

例如,说我有蓝图fish。它具有许多视图,例如fish.viewfish.editfish.indexfish.search。蓝图的默认前缀为/fishes/,因此视图最终以/fishes/<id>//fishes/<id>/edit/fishes//fishes/search结束。

如何在不更改其他视图的URL的情况下将fishes.search的URL更改为/search而不是/fishes/search

我知道我可以这样做:

@app.route('/search')
def search(**kwargs):
    return fish_views.search(**kwargs)

但是,如果我这样做了,那么url_for('fish.search')仍将返回/fishes/search。我希望url_for返回首选网址。

def create_app():
    app = Flask(__name__)
    from . import fish_views
    app.register_blueprint(fish_views.blueprint)
    app.change_view_url_somehow('fish.search', '/search')

1 个答案:

答案 0 :(得分:0)

在没有猴子修补Flask的route装饰器或不手动利用add_url_for的情况下,最简单的方法是仅将/search附加到主应用程序,并指定鱼蓝图最终将解析为的端点默认值:

@app.route('/search', endpoint='fish.search')
def search(**kwargs):
    pass