我有一个像这样定义的路线:
@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在您的示例中,名称默认为函数的名称).