flask.url_for(endpoint, **values)
endpoint
对我来说似乎很神奇。它的行为方式如下:
dothat
url_for('dothat')
views.dothat
,url_for('dothat')
可以url_for('myapp.views.dothat')
获取,我希望我必须提供完全限定方法名称,如{{1}} 1}} 因此,如果它不是完全限定的方法名称,那么Flask作为端点接受什么?
答案 0 :(得分:1)
Flask 不使用端点的模块名称。它只是默认为函数名。
如果您注册两个具有相同名称的不同功能(例如,在两个不同的模块中),则会引发AssertionError
异常:
raise AssertionError('View function mapping is overwriting an '
'existing endpoint function: %s' % endpoint)
您可以在这种情况下指定显式端点名称:
@app.route('/', endpoint='alt_homepage')
def homepage():
pass
请参阅@Flask.route()
documentation:
端点 - 已注册网址规则的端点。 Flask本身将视图函数的名称视为端点
当您注册视图(使用@app.route()
装饰器)时,将确定端点名称(除非您明确设置一个)并与路径注册一起存储。 url_for()
使用路由注册来查找根据该名称注册的所有路由,并找到最适合您传递给url_for()
的参数的路由。