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

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

@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

回答:

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

放下多余的括号:

<h1>you uploaded {{ name }}<h1>

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

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

以上是 Python-Jinja表达式中的引用模板变量 的全部内容, 来源链接: utcz.com/qa/420552.html

回到顶部