我正在尝试在循环期间附加到列表中..我收到的错误是关于我的{%if%}标记没有被关闭并遇到unknowntag'hidden'。我在这里缺少什么?
{% set hidden = [] %}
{% for row in packages %}
{% if row.hidden %} #OPEN
{% hidden.append(row.id) %} #APPEND
{% endif %} # CLOSED
{% endfor %}
{% if hidden[0] %} # If my list isn't empty, show the next line
View Packages (Click here to show hidden)
{% else %}
View Packages # If list is empty show this line
{% endif %}
有什么想法吗?
答案 0 :(得分:1)
出于某种原因,我的hidden.append必须在另一个if语句中。
{% set hidden = [] %}
{% for row in packages %}
{% if row.hidden %} #OPEN
{% if hidden.append(row.id) %}{% endif %} #APPEND #THIS LINE
{% endif %} # CLOSED
{% endfor %}
{% if hidden[0] %} # If my list isn't empty, show the next line
View Packages (Click here to show hidden)
{% else %}
View Packages # If list is empty show this line
{% endif %}
答案 1 :(得分:1)
Jinja2基于if标签或set标签之类的标签,但标签和python代码不一样。特别是你不能接受任何python代码,把它放在{% %}
中并期望它能够工作。而是使用do
tag
{% for row in packages %}
{% if row.hidden %} #OPEN
{% do hidden.append(row.id) %}
{% endif %} # CLOSED
{% endfor %}
您的if
版本有效,因为如果执行代码并查看returnvalue。但是您对返回值不感兴趣,因此请使用do
标记。
do
表达式是一个扩展名,因此您需要加载它以使其正常工作。