我有这段代码
{% for account in object_list %}
<tr>
{% for field, value in book.get_fields %}
<th>{{ field.verbose_name }}</th>
{% endfor %}
</tr>
{{ break }}
{% endfor %}
我想在第一次迭代后打破for循环。休息不起作用
答案 0 :(得分:90)
我认为你应该使用切片来实现你的目标
{% for account in object_list|slice:":1" %}
答案 1 :(得分:16)
Django模板系统中没有break
。 Django模板系统不是用 python 编程的,而是with its own language。
根据您的需要,您可能会发现this question非常有用。否则,只需在RequestContext
上的特殊字段上打上 HTML 上的唯一帐户。
答案 2 :(得分:2)
您不能使用break语句,但您可以选择不在html上打印它们。它不是最佳解决方案,但您可以使用它。我使用以下一个;
{%for tumbnail in image %}
{%if tumbnail.object_id == element.id %}
<img src="/media/{{ tumbnail.image }}" class="tr_all_hover"alt="">
{{ "<!--" }}
{%endif%}
{%endfor%}
{{ "-->" }}
它在浏览器上基本上看起来像这样。 http://i.stack.imgur.com/MPbR3.jpg
答案 3 :(得分:2)
{% for i in list %}
{% if forloop.counter < 11 %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ i.product__name }}</td>
<td>{{ i.brand__name }}</td>
<td>{{ i.country__name}}</td>
<td>{{ i.city__name}}</td>
</tr>
{% endif %}
{% endfor %}
答案 4 :(得分:1)
我找到了一种方法来解决这个问题。这是丑陋和hacky,但它(适合我)。 first
是OP想要的,但这更能回答实际问题。
鉴于此:
obj = {
'children': [
{ 'possessions' : { 'toys': [] } },
{ 'possessions' : { 'toys': ['train'] } }
{ 'possessions' : { 'toys': ['train', 'ball'] } }
]
}
我想知道我的obj是否有任何孩子拥有玩具。
if ([child for child in obj.children if child.possessions.toys]):
# Whatever
我的方法是使用regroup
来构建符合或不符合标准的候选人:
{% regroup obj.children by possessions.toys|length_is:"0" as by_toys %}
{% for check in by_toys %}{% if check.grouper == False %}
Whatever
{% endif %}{% endfor %}
regroup
构建一个基本上是的新对象:
[
{ 'grouper': '', 'list': [/*...*/] },
{ 'grouper': True, 'list': [/*...*/] },
{ 'grouper': False, 'list': [/*...*/] }
]
length_is:"0"
确保该列表中最多包含三个元素,grouper
为True
或False
或''
。然后我们遍历列表并检查False
值。
if
永远不会被点击。False
grouper
的列表。False
grouper
的列表。False
和True
grouper
的列表。答案 5 :(得分:1)
你可以使用你的Django模板系统循环javascript for循环作为内循环,并可以使用break如下: -
for(var i=0;i<1;i++){
{% for owner in Owner %}
id = "{{owner.id}}";
if(id == pk1){
f="{{owner.flat}}";
break;
}
{% endfor %}
}
答案 6 :(得分:1)
在这种情况下,您可以检查forloop.counter == 1或forloop.first并仅打印该第一项。
{% for account in object_list %}
{% if forloop.first %}
<tr>
{% for field, value in book.get_fields %}
<th>{{ field.verbose_name }}</th>
{% endfor %}
</tr>
{% endif %}
{% endfor %}
答案 7 :(得分:0)
Django 模板系统中没有 break
,但您可以使用 bellow 架构实现类似 break 的语句。 (循环会进行迭代,但你什么都不做。)
1- 使用 with 定义一个变量来确定当前状态,
2- 使用模板自定义标记更改语句以否定当前状态。
在模板中这样使用:
{% with statement=1 %}
{% for obj in listObject %}
{% if ifStatement and statement %}
{% changeStatement statement as statement %} // when u don't want to enter in if again.
Do your job here!!
{% endif %}
{% endfor %}
{% endwith %}
在模板自定义标签中:
@register.simple_tag
def changeStatement(status):
return not status