一尘不染

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

flask

我有一条这样定义的路线:

@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


阅读 700

收藏
2020-04-04

共1个答案

一尘不染

里面的所有内容{{ ... }}都是类似Python的表达式。你无需在其中使用另一个{{ ... }}引用变量。

放下多余的括号:

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

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

2020-04-04