2017-05-06 69 views
0

在jinja模板中,我的腳本中有一個for循環,起始標記{% for each in list_one %}和結束標記{% endfor %}Strting for loop tag inside if else tag raise error

我想設置2個條件來選擇循環工作的起始標記。事情是這樣的:

{% if name %} 
    {% for each in list_one %} 
{% else %} 
    {% for each in list_two %} 
     {{ each }} 
{% endif %} 
    {% endfor %} 

我面對的錯誤是:

jinja2.exceptions.TemplateSyntaxError:Encountered unknown tag 'endif'. You probably made a nesting mistake. Jinja is expecting this tag, but currently looking for 'endfor' or 'else'. The innermost block that needs to be closed is 'for'.

+0

在if或else部分中啓動'for'意味着您必須在該部分中結束它。現在你在if和else中開始「for」,並在endif之後結束。把它們想象成HTML標籤,它們成對並需要正確嵌套 – RST

+0

這不適合你。你必須在'if'關閉之前關閉'for'循環。 –

回答

3

你有if條款之前關閉for循環。爲了決定要迭代哪個列表,您可以這樣做:

{% if name %} 
    {% set desired_list = list_one %} 
{% else %} 
    {% set desired_list = list_two %} 
{% endif %} 
{% for each in desired_list %} 
    {{ each }} 
{% endfor %} 
+0

我同意,這是做這件事的方法......(投票) – Plirkee

+0

謝謝你現在的作品。 – Andishe

0

您正在嘗試使用for循環無論是在ifelse塊。但您錯過了關閉for循環,然後關閉ifelse區塊。

正確的代碼是這樣的:

{% if name %} 
    {% for each in list_one %} 
    {% endfor %} 
{% else %} 
    {% for each in list_two %} 
     {{ each }} 
    {% endfor %} 
{% endif %}