Flask Jinja2模板变量正确使用语法

Flask Jinja2模板变量正确使用语法,flask,jinja2,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 = '' %}
{% 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 }}"/>
{%set hdnfiles='''%}
{%如果tr.files不是none并且tr.files | length>0%}
{tr.files%中的文件为%1}
{如果hdnfiles |长度>0%,则为%1}
{%set hdnfiles=hdnfiles~“;”~file%}
{%else%}
{%set hdnfiles=file%}
{%endif%}
{%endfor%}
{%endif%}

set
不会覆盖外部范围上的值。Jinja中的作用域与Python中的作用域不同;控制结构(如
if
for
)的范围与它们周围的代码(初始
设置
时)不同

对于新的编译器后端,我会记住这一点,但在当前的编译器后端中,由于性能原因,这是不可能实现的

在呈现模板之前,请考虑在Python中构建此字符串,而不是在模板中构建它