生成HTML的最佳方法是什么?Django模板中的每个类别和该类别下的产品都有标题?
我玩弄了一本传递字典或有序列表的想法......
答案 0 :(得分:8)
查看重新组合模板过滤器
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup
有了它,你可以这样做:
{% regroup products by category as products_by_category %}
{% for c in products_by_category %}
<h1>{{c.grouper}}</h1>
<ul>
{% for p in c.list %}
<li>{{p.name}}</li>
{% endfor %}
</ul>
{% endfor %}
答案 1 :(得分:4)
除了@Wade建议您还可以向Category模型添加方法以返回其拥有的产品。
实施例..
class Category:
...
...
def get_products(self):
return Product.objects.filter(category=self)
然后在模板中你可以..
{% for category in categories %} # assuming categories is passed from the view.
{% for product in category.get_products %}
...
答案 2 :(得分:1)
在视图代码
中使用了排序列表sorted(dom_obj.objects.all(), key=lambda d: d.sort_key)
然后使用过滤器标签
{% ifchanged %}<h1>{{ prod.cat }}</h1>{% endifchanged %}