web-dev-qa-db-fra.com

si variable et variable est définie - jinja2

J'essaie de montrer divs selon qu'une entrée de base de données a été faite:

<table class="info-table">
<tr><td>
<div class="info-table_titlebox">
{% if post.wrk_1_title is defined %}
    <div class="info-title_title">
    <h2>{{post.wrk_1_title}}</h2>
    <h3>Facilitator: {{post.wrk_1_facilitator}}</h3>
    <h4>Location: {{post.wrk_1_locate}}</h4>
    <h4>Max participants: {{post.wrk_1_max}}</h4>
    </div>
    <div class="info-title_list">
        <ul>
        <li>{{post.eventday}} - <b>Week {{post.eventweek}}</b></li>
        <li class="info-title_listright">{{post.wrk_1_time}}</li>
        </ul>
    </div>
    <p>{{post.wrk_1_description}}</p>
{% endif %}
</div>
</td>
<td>
<div class="info-table_titlebox">
{% if post.wrk_1_title is defined and post.wrk_2_title is defined %} 
    <div class="info-title_title">
    <h2>{{post.wrk_2_title}}</h2>
    <h3>Facilitator: {{post.wrk_2_facilitator}}</h3>
    <h4>Location: {{post.wrk_2_locate}}</h4>
    <h4>Max participants: {{post.wrk_2_max}}</h4>
    </div>
    <div class="info-title_list">
        <ul>
        <li>{{post.eventday}} - <b>Week {{post.eventweek}}</b></li>
        <li class="info-title_listright">{{post.wrk_2_time}}</li>
        </ul>
    </div>
    <p>{{post.wrk_2_description}}</p>
{% endif %}
</div>
</td>

Il s'agit d'un extrait simplifié - le motif continue. Fondamentalement, si le titre est dans la base de données, affichez uniquement div1 si les deux title 1 et title 2 sont dans la base de données show div1 et div2 etc.

Actuellement, ce genre de travail fonctionne car il montre le div que je veux montrer, mais pour une raison quelconque, il montre également le suivant. Si j'ai un titre pour div 1 ça montre 1 et 2, si j'ai un titre pour div 1 et 2 ça montre 1, 2, and 3

Je suis vraiment confus car je suis vraiment nouveau à Jinja2. Je ne sais pas si c'est mon positionnement de la syntaxe dans le html, ou si la syntaxe est incorrecte, ou si vous n'êtes pas en mesure de vérifier à travers deux variables ... toute aide serait appréciée.

12
Jesse

Comme en Python, le 0, None, [], {} et "" sont faux. Autre chose que cela, c'est vrai.

"L'instruction if dans Jinja est comparable aux instructions if de Python. Dans sa forme la plus simple, vous pouvez l'utiliser pour tester si une variable est définie, ni vide ni fausse:"

{% if post and post.wrk_1_title %}

{% endif %}

Documentation: http://jinja.pocoo.org/docs/templates/#if

34
Shankar Cabus