2017-03-16 16 views
1

下の最初の行について、jinja2テンプレートはxが存在するかどうかをレンダリングします。ただし、2行目では、xが既存のリストである場合にのみテンプレートがレンダリングされます。 jinja2:リスト内の最初の項目を取得します。

<p>x: {{ x }}</p> 

<p>x[0]: {{ x[0] }}</p> 
UndefinedError: 'x' is undefined 

は変数が存在するかどうかを確認し、よりその最初の項目を取得するためのより良い方法があります:それは、私はエラーを取得していない場合( xが、それは常に少なくとも一つのアイテムを持つリストで存在する場合と仮定)私は(私は私のテンプレートにはるかに長い名前を持つ xのインスタンスのトンを持っていると私はむしろ、if節とするたびにそれをラップではないと思います)ここにある:

{% if x %} 
    <p>x[0]: {{ x[0] }}</p> 
{% endif % 

答えて

1

神社はインラインif else文をサポートし、Pythonのとは違ってもelseを省略することができます。

{{ x[0] if x }} 
0

たぶん、リストのリストを返すしてみてくださいそれを反復すると、あなたは「変数チェック」を一度書くだけです。これらの線に沿って

何か:

{% for x in list %} 
    {% if x %} 
     <p>x[0]: {{ x[0] }}</p> 
    {% endif %} 
{% endfor %} 
関連する問題