Jinja2 模板变量正确使用语法
Jinja2 template variable proper usage syntax
我正在尝试迭代列表以填充用于设置隐藏字段值的变量。请参阅下面的代码示例。我能够迭代列表并连接变量但是,当我将变量的内容分配给隐藏的输入值时,那里什么也没有。这样做的正确方法是什么?
{% 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
不会覆盖外部范围的值。 Jinja 中的作用域与 Python 中的不同;控制结构(例如 if
和 for
)与其周围的代码(初始 set
完成的地方)具有不同的范围。 Way back in 2011, Jinja's author stated:
I will keep it in mind for the new compiler backend, but in the current one that is not possible to achieve for performance reasons.
考虑在呈现模板之前在 Python 中构建此字符串,而不是在模板中构建它。
我正在尝试迭代列表以填充用于设置隐藏字段值的变量。请参阅下面的代码示例。我能够迭代列表并连接变量但是,当我将变量的内容分配给隐藏的输入值时,那里什么也没有。这样做的正确方法是什么?
{% 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
不会覆盖外部范围的值。 Jinja 中的作用域与 Python 中的不同;控制结构(例如 if
和 for
)与其周围的代码(初始 set
完成的地方)具有不同的范围。 Way back in 2011, Jinja's author stated:
I will keep it in mind for the new compiler backend, but in the current one that is not possible to achieve for performance reasons.
考虑在呈现模板之前在 Python 中构建此字符串,而不是在模板中构建它。