如果定义了变量和变量 - jinja2

时间:2012-09-04 23:36:26

标签: jinja2

我正在尝试显示div取决于是否已创建数据库条目:

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

这是一个简化的片段 - 模式继续。基本上,如果标题在数据库中仅显示div1,如果title 1title 2都在数据库中显示div1div2,依此类推。

目前这种作品显示我要展示的div,但出于某种原因,它也显示了下一个。如果我有div 1的标题,则会显示12,如果我有div 12的标题,则会显示1, 2, and 3

我真的很困惑,因为我对Jinja2很新。我不确定这是我在html中的语法定位,还是语法错误,或者如果你无法检查两个变量......任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:32)

与Python一样,0None[]{}""都是假的。除此之外的任何事情,都是真的。

  

“Jinja中的if语句与if语句相当   蟒蛇。在最简单的形式中,您可以使用它来测试变量是否   定义的,不是空的或不是假的:“

{% if post and post.wrk_1_title %}

{% endif %}

文档:http://jinja.pocoo.org/docs/templates/#if