在Jinja表达式中引用模板变量

22

我有一个这样定义的路由:

@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: 期望标记 ':',但得到了 '}'

有人可以建议如何将模板中出现的 {{ name }} 放入 url_for() 中,以便在单击时调用正确的 app.route 吗?

1个回答

39

{{ ... }} 中的所有内容都是类似 Python 的表达式。您不需要在其中使用另一个 {{ ... }} 来引用变量。

去掉多余的括号:

<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('moremagic', filename=name) }}">Click to see magic happen</a>

(请注意,url_for()函数使用的是终端点名称而不是URL路径;在您的示例中,名称默认为函数名moremagic)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接