我的路线定义如下:
@app.route('/magic/<filename>')
def moremagic(filename):
pass
现在在模板中,我想使用url_for()
调用该路由,如下所示:
<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>
我试过了:
<a href="{{ url_for('/magic', filename={{ name }}) }}">Click to see magic happen</a>
抛出jinja2.TemplateSyntaxError: expected token ':' got }
有人可以建议如何将模板中显示的{{ name }}
添加到url_for()
中,这样当我点击时我会调用正确的app.route
吗?
答案 0 :(得分:21)
{{ ... }}
内的所有内容都是类似Python的表达式。您不需要在其中使用另一个{{ ... }}
来引用变量。
删掉额外的括号:
<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>
(请注意,url_for()
函数采用端点名称,而不是URL路径;名称默认为函数名称,在您的示例中为moremagic
。