Flask url_for如何工作?

杰斯文·乔斯
flask.url_for(endpoint, **values)

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

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

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

马丁·彼得斯(Martijn Pieters)

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

如果您使用相同的名称注册两个不同的功能(例如,在两个不同的模块中),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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章