从 Jinja2 循环内部设置条件

Set a condition from inside of a loop 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 标签不会生成到页面

整个想法是防止在页面中放置空标签 我知道我可以在外面放另一个 if 表达式但是维护起来太复杂

你可以把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 %}
{% 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 %}