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

发布于 2021-02-02 23:20:23

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

@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

关注者
0
被浏览
201
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

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

    放下多余的括号:

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看