从 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.first
和loop.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 %}
<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.first
和loop.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 %}