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

9 python jinja2 flask

我有一个像这样定义的路线:

@app.route('/magic/<filename>')
def moremagic(filename):
    pass
Run Code Online (Sandbox Code Playgroud)

现在在模板中我想用url_for()这样的方式调用该路由:

<h1>you uploaded {{ name }}<h1>
<a href="{{ url_for('/magic/<filename>') }}">Click to see magic happen</a>
Run Code Online (Sandbox Code Playgroud)

我试过了:

<a href="{{ url_for('/magic', filename={{ name }}) }}">Click to see magic happen</a>
Run Code Online (Sandbox Code Playgroud)

那扔了一个 jinja2.TemplateSyntaxError: expected token ':' got }

任何人都可以建议如何{{ name }}将模板中出现的内容输入到url_for()所以当我点击时我调用正确的app.route

Mar*_*ers 24

里面的一切都是{{ ... }}类似Python的表达式.您不需要在其中使用另一个{{ ... }}来引用变量.

删掉额外的括号:

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

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