2017-05-06 15 views
0

jinjaテンプレートには、スクリプト内にforループがあり、開始タグ{% for each in list_one %}と終了タグ{% endfor %}があります。ループタグ内にループタグがある場合他のタグraiseエラー

forループの開始タグを選択するための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

あなたがifelseブロックの両方でforループを使用しようとしています。しかし、ifelseブロックを閉じる前に、forループを閉じることができませんでした。

正しいコードは次のようである:

{% if name %} 
    {% for each in list_one %} 
    {% endfor %} 
{% else %} 
    {% for each in list_two %} 
     {{ each }} 
    {% endfor %} 
{% endif %} 
関連する問題