我想把break和continue放在我的代码中,但它在Django模板中不起作用。我如何使用continue和break使用Django模板循环。这里是一个例子:
{% for i in i_range %}
{% for frequency in patient_meds.frequency %}
{% ifequal frequency i %}
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}" checked/> {{ i }} AM</td>
{{ forloop.parentloop|continue }} ////// It doesn't work
{ continue } ////// It also doesn't work
{% endifequal %}
{% endfor%}
<td class="nopad"><input type="checkbox" name="frequency-1" value="{{ i }}"/> {{ i }} AM</td>
{% endfor %}
4条答案
按热度按时间hi3rlvi21#
Django自然不支持它。
可以实现forloop|continue和forloop|打破自定义过滤器。
http://djangosnippets.org/snippets/2093/
hgb9j2n62#
Django模板中的for循环与普通的Python for循环不同,因此
continue
和break
将无法在其中工作。在Django docs中,没有break
或continue
模板标记。考虑到Keep-It-Simple-Stupid在Django模板语法中的整体位置,您可能必须找到另一种方法来完成您需要的内容。7y4bm7vi3#
对于大多数情况下,不需要自定义templatetags,这很容易:
继续:
break使用相同的概念,但范围更广:
这是一个Jinja模板,你可以在Django中轻松使用它。
您甚至可以在同一个项目中使用两个模板后端(Jinja和Django模板)。
z0qdvdin4#
如果你想在某些条件下继续/中断,我使用下面的简单标签,如下与“Vanilla”Django 3.2.5:
然后就可以将它作为模板中的任何变量使用
对于任何你想在模板上重用的变量类型都非常有用,而不需要使用
with
语句。