Jinja2模板变量正确使用语法

时间:2015-03-12 16:24:09

标签: flask jinja2

我正在尝试迭代列表以填充用于设置隐藏字段值的变量。请参阅下面的代码示例。我能够迭代列表并连接变量,但是当我将变量的内容分配给隐藏的输入值时,那里什么都没有。这样做的正确方法是什么?

{% set hdnfiles = '' %}
{% if tr.files is not none and tr.files|length > 0 %}
    {% for file in tr.files %}
        {% if hdnfiles|length > 0 %}
            {% set hdnfiles = hdnfiles ~ ";" ~ file %}
        {% else %}
            {% set hdnfiles = file %}
        {% endif %}
    {% endfor %}
{% endif %}
<input type="hidden" id="filesHidden" name="filesHidden" value="{{ hdnfiles }}"/>

1 个答案:

答案 0 :(得分:0)

set不会覆盖外部作用域上的值。 Jinja中的范围与Python不同;控制结构(例如iffor)的范围与其周围的代码(初始set已完成)的范围不同。 Way back in 2011, Jinja's author stated:

  

对于新的编译器后端,我会记住它,但是在当前由于性能原因无法实现的那个。

考虑在渲染模板之前在Python中构建此字符串,而不是在模板中构建它。