2016-11-13 56 views
0

我試圖在循環中追加到列表..我得到一個有關我的{%if}標籤沒有被關閉並遇到unknowntag'隱藏' 。我在這裏錯過了什麼?Jinja2得到endif錯誤,甚至tho標籤明顯結束

{% 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

顯示完整的錯誤消息和有問題的完整模板。如果您在模板中使用'extends',則也會顯示基本模板。 – furas

回答

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 %} 
+0

'{%%}'不支持執行任意代碼。 – dirn

1

Jinja2的基於像一個標籤,如果標籤或一組標籤,但標籤和Python代碼是不一樣的。特別是你不能拿任何Python代碼,把它放在{% %},並期望它的工作。而是使用do tag

{% for row in packages %} 
{% if row.hidden %} #OPEN 
{% do hidden.append(row.id) %} 
{% endif %} # CLOSED 
{% endfor %} 

你的版本if因爲工作,如果執行的代碼,並期待在返回值。但是您對返回值不感興趣,因此請使用do標籤。

do expression是一個擴展名,所以您需要加載它才能工作。

相關問題