我的模板中有很多这样的代码:
<h2>Owners of old cars</h2>
<table id="hor-minimalist-b" summary="Old Cars">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Address</th>
</tr>
</thead>
<tbody>
{% for result in old_cars %}
<tr>
<td>{{result.name}}</td>
<td>{{result.age}}</td>
<td>{{result.address}}</td>
</tr>
{% endfor %}
</tbody>
</table>
<h2>Owners of Ford cars</h2>
<table id="hor-minimalist-b" summary="Old Cars">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Address</th>
</tr>
</thead>
<tbody>
{% for result in ford_cars %}
<tr>
<td>{{result.name}}</td>
<td>{{result.age}}</td>
<td>{{result.address}}</td>
</tr>
{% endfor %}
</tbody>
</table>
将会创建更多像上面那样的表格。如您所见,有许多重复的代码。反正有没有这样做,所以每次创建一个表时我都不会重复那么多的代码?感谢。
更新
我正在考虑创建一个名为table的新对象,并为其添加结果和相应的h2标题。然后,我可以创建这些表对象的列表,称为表,我可以将其传递给模板。然后模板可以迭代它们。
答案 0 :(得分:3)
理想情况下,你想要的是:
{% for car in cars %}
<h2>Owners of {{ car.manufacturer }}</h2>
<table id="hor-minimalist-b" summary="Old Cars">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Address</th>
</tr>
</thead>
<tbody>
{% for model in car.models %}
<tr>
<td>{{model.name}}</td>
<td>{{model.age}}</td>
<td>{{model.address}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endfor %}
我不确定你正在使用什么样的ORM,但是在Django中构建起来并不太难;毕竟,传入的所有内容都是具有子对象和字段的对象列表。
同样,我只能谈论一个django视角(从你自己的ORM构造),但是你可以故意用每种类型的制造商的显式请求构建字典,或者更确切地说有一个“销售”模型和一个模型对于“制造商”并构建两者之间的多对多关系。您的查询大致如下所示,在django python中:
result = []
manufacturers = Manufacturer.objects.all() # get all manuf
for m in manufacturer:
mf = dict()
mf["manufacturer"] = m.name
mf["models"] = m.model_set.all() # get all linked models
result.append(mf)
# pass result to template as cars
这有意义吗?
答案 1 :(得分:0)
使用模板作为表格的页眉和页脚
<table id="hor-minimalist-b" summary="Old Cars">
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
<th scope="col">Address</th>
</tr>
</thead>
<tbody>
将其放入名为“table_header.html”的文件中,并将其包含在模板中。 页脚也一样!