下面的代码在django模板语言中是有效的,但我不知道为什么。这段代码的目的是将表单显示为一个有很多列的表格。第一件让我感到困惑的事情是,打开一行的标签从来没有给出,但它仍然是制造的。
{% extends 'base.html' %}
{% load render_table from django_tables2 %}
{% block content %}
<form method="get">
{% csrf_token %}
<table>
<tbody>
{% for field in filter.form %}
<td>{{ field.label}}</td>
<td>{{ field }}</td>
{% if forloop.counter|divisibleby:"4"%}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<input type="submit" value="Search">
</form>
{% render_table table%}
{% endblock %}
这将生成一个四列的表格。是否有任何方法可以显式声明开始标记?为什么这段代码可以工作?
我试过显式地为行创建标记,但是这并没有正确地创建表。它有一个空行空间和一个额外的行。
{% extends 'base.html' %}
{% load render_table from django_tables2 %}
{% block content %}
<form method="get">
{% csrf_token %}
<table>
<tbody>
{% for field in filter.form %}
{% if forloop.counter|divisibleby:"5"%}
<tr>
{% endif %}
{% if forloop.counter|divisibleby:"5" == False %}
<td>{{ field.label}}</td>
<td>{{ field }}</td>
{% endif %}
{% if forloop.counter|divisibleby:"5"%}
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
<input type="submit" value="Buscar">
</form>
{% render_table table%}
{% endblock %}
2条答案
按热度按时间polhcujo1#
**为什么这样做?**HTML是相当宽松的,浏览器可以推断出你试图用上下文做什么。
td
在tr
之前,应该有一行在-〉add one之前**有没有任何方法可以显式地声明开始标记?**我相信通过结合现有的和
{% forloop.first %}
+{% forloop.last %}
可以做到这一点。qco9c6ql2#
谢谢,我已经把下面的代码也工作。我认为现在是更深思熟虑。第一个if创建了开始标记,因为下一个标记应该是一对从可分割生成的,这些都在elif中,if包含了最后一个标记,它应该是一个单独的结束标记,因为如果它是一对可分割的标记,它将创建一个额外的行。