在Flask中,我可以更改蓝图的前缀,但是有没有办法更改单个视图的URl?
例如,说我有蓝图fish
。它具有许多视图,例如fish.view
,fish.edit
,fish.index
和fish.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')
答案 0 :(得分:0)
在没有猴子修补Flask的route
装饰器或不手动利用add_url_for
的情况下,最简单的方法是仅将/search
附加到主应用程序,并指定鱼蓝图最终将解析为的端点默认值:
@app.route('/search', endpoint='fish.search')
def search(**kwargs):
pass