Jinja表达式中的参考模板变量

时间:2015-08-15 12:07:16

标签: python flask jinja2

我的路线定义如下:

@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吗?

1 个答案:

答案 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