gpt4 book ai didi

python - 当使用 url_for 链接到 @route 中带有变量的函数时,Flask-Classy 给出 BuildError

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:36 26 4
gpt4 key购买 nike

所以我有一个这样设置的 View :

class toi(FlaskView):
def index(self):
...
return render_template('home.html')

@route('/api/')
@route('/api/<int:urlgid>/')
@route('/api/<int:urlgid>/<int:urlper>/')
def APIInstruction(self, urlgid=None, urlper=None):
return render_template('toi-instructions.html')

然后在我的主 app.py 中我有

from views.toi import toi
toi.register(app)

然后在 toi:index 输出的 HTML 中我有

... <a href="{{ url_for('toi:APIInstruction') }}">how to use the API</a>  ...

这给了我一个构建错误(没有更多细节),我一直在绞尽脑汁试图弄清楚这一点。如果我删除@routes,错误就会消失。如果我去掉第二个和第三个@routes,它不会给我一个构建错误。如果我将 urlgid 和 urlper 放入 url_for() 函数中,它不会改变任何内容。我尝试更改端点,尝试将 url_for 更改为 toi:api。

我不确定导致此 BuildError 的错误是什么。

最佳答案

当您对单个 View 使用多个路由时,会创建多个端点(每个路由一个端点)。为了帮助您区分每个端点,Flask-Classy 会在预期路由名称的末尾附加一个索引。从最后定义的路由开始,顺序为 0 到 n。所以给出你的例子:

@route('/api/') # use: "toi:APIInstruction_2"
@route('/api/<int:urlgid>/') # use: "toi:APIInstruction_1"
@route('/api/<int:urlgid>/<int:urlper>/') # use: "toi:APIInstruction_0"
def APIInstruction(self, urlgid=None, urlper=None):
return render_template('toi-instructions.html')

您可以在此处阅读有关此行为的更多信息: http://pythonhosted.org/Flask-Classy/#using-multiple-routes-for-a-single-view

或者(这是我更喜欢的方法),您可以指定要在任何 @route 装饰器中显式使用的端点。例如:

@route('/api/', endpoint='apibase')

可以使用以下方式访问:

url_for('apibase')

关于python - 当使用 url_for 链接到 @route 中带有变量的函数时,Flask-Classy 给出 BuildError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18885186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com