flask.url_for(endpoint, **values)
这endpoint件事对我来说似乎很神奇。它的行为方式如下:
endpoint
dothat
url_for('dothat')
views.dothat``url_for('dothat')
url_for('myapp.views.dothat')
因此,如果不是完全限定的方法名称,Flask将作为端点使用什么?
瓶并 没有 端点使用模块名。它只是默认为函数名称。
如果您使用相同的名称注册两个不同的功能(例如,在两个不同的模块中),AssertionError则会引发异常:
AssertionError
raise AssertionError('View function mapping is overwriting an ' 'existing endpoint function: %s' % endpoint)
在这种情况下,您可以指定一个明确的端点名称:
@app.route('/', endpoint='alt_homepage') def homepage(): pass
请参阅@Flask.route()文档:
@Flask.route()
端点 –已注册URL规则的端点。Flask本身将视图函数的名称假定为端点
当您使用@app.route()装饰器注册视图时,端点名称将被确定(除非您明确设置了一个),并随路由注册一起存储。url_for()使用路由注册来查找针对该名称注册的所有路由,并找到最匹配您还传递给的参数的路由url_for()。
@app.route()
url_for()