我有一条这样定义的路线:
@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 }
jinja2.TemplateSyntaxError: expected token ':' got }
谁能建议如何将{{ name }}出现在模板中的转换为,url_for()以便在单击时调用正确的名称app.route?
{{ 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在你的示例中,该名称默认为该函数的名称)。
moremagic