从循环Jinja2内部设置条件

时间:2016-08-17 12:38:59

标签: python templates jinja2

     <ul>
        {% for bm in user.bookmarks %}
            <li>
                <a href="{{ bm.url }}">{{ bm.description }}</a>
            </li>
        {% else %}
            <li>This user has not added any bookmarks yet.</li>
        {% endfor %}
    </ul>

有没有办法从循环内部设置条件 我的意思是如果'for loop'没有任何结果,ul标签不会生成页面

整个想法是阻止在页面中放置空标签 我知道我可以把另外一个表达式放在外面但是维护这么复杂

2 个答案:

答案 0 :(得分:1)

您可以将ul标记放在循环中,并使用loop.firstloop.last变量来控制它们。

{% for bm in user.bookmarks %}
  {% if loop.first %}
    <ul>
  {% endif %}
      <li>
          <a href="{{ bm.url }}">{{ bm.description }}</a>
      </li>
  {% if loop.last %}
    </ul>
  {% endif %}
{% else %}
   This user has not added any bookmarks yet.
{% endfor %}

答案 1 :(得分:0)

{% if user.bookmarks %} 
<ul>
        {% for bm in user.bookmarks %}
            <li>
                <a href="{{ bm.url }}">{{ bm.description }}</a>
            </li>
        {% else %}
            <li>This user has not added any bookmarks yet.</li>
        {% endfor %}
    </ul>
{% enfif %}