【问题标题】:Reference template variable within Jinja expression在 Jinja 表达式中引用模板变量
【发布时间】:2015-11-08 13:33:38
【问题描述】:

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

@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 flask jinja2


    【解决方案1】:

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

    去掉多余的括号:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      相关资源
      最近更新 更多