Django 模板如果类型添加到 html id

Django template if type add to html id

模型 gigi 有一个 typology 属性,我想根据 [=13= 的值将项目添加到 html div 标签中] 属性。我怎样才能在 Djangos 模板中做到这一点:

for gigi in object_list


<div id="typology1">
{%if gigi.typology == "typology1"> %}
   <div> {{gigi.name}}</div>
{% endif %}
</div>

<div id="typology2">
{%if gigi.typology == "typology2"> %}
   <div> {{gigi.name}}</div>
{% endif %}
</div>

这是唯一的方法吗?有更好的 DRY(不要重复自己)方法吗?

您目前的代码没有问题;不过,您可以进行以下小调整并删除相当多的代码。

为什么不使用 gigi.typology 字符串作为 id

{% for gigi in object_list %}
<div id="{{ gigi.typology }}"> 
   <div> {{gigi.name}}</div>
</div>
{% endfor %}

如果您正在考虑将特定 "typology" 的所有元素组合在一起,那么您也可以使用 regroup 子句。

{% regoup object_list by typology as typolist %}
{% for typo in typolist %}
    <div id="{{ typo.grouper }}">
        {% for gigi in typo.list %}
        {{ gigi.name }}
        {% endfor %}
    </div>
{% endfor %}