小编典典

Flask url_for如何工作?

python

flask.url_for(endpoint, **values)

endpoint件事对我来说似乎很神奇。它的行为方式如下:

  1. 在单个文件中,dothat可以通过以下方法获取修饰的方法url_for('dothat')
  2. 当我期望必须提供 完全限定的* 方法名称时,可以通过来获取带有package的,例如views.dothat``url_for('dothat') *url_for('myapp.views.dothat')

因此,如果不是完全限定的方法名称,Flask将作为端点使用什么?


阅读 222

收藏
2020-12-20

共1个答案

小编典典

瓶并 没有 端点使用模块名。它只是默认为函数名称。

如果您使用相同的名称注册两个不同的功能(例如,在两个不同的模块中),AssertionError则会引发异常:

raise AssertionError('View function mapping is overwriting an '
                     'existing endpoint function: %s' % endpoint)

在这种情况下,您可以指定一个明确的端点名称:

@app.route('/', endpoint='alt_homepage')
def homepage():
    pass

请参阅@Flask.route()文档

端点 –已注册URL规则的端点。Flask本身将视图函数的名称假定为端点

当您使用@app.route()装饰器注册视图时,端点名称将被确定(除非您明确设置了一个),并随路由注册一起存储。url_for()使用路由注册来查找针对该名称注册的所有路由,并找到最匹配您还传递给的参数的路由url_for()

2020-12-20