如何动态地向Django模板'forloop'添加html类?

2024-05-06 07:12:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSS文件,其中定义了我的一些样式:

.class-a{
    /*some styles*/
}
.class-b{
    /*some styles*/
}
.class-c{
    /*some styles*/
}
.class-d{
    /*some styles*/
}

这些样式必须应用于djangofor-loop的输出。在

for循环:

^{pr2}$

我该如何修改这个循环,即class="[something]"部分,使输出看起来像这样,有序或无序:

<span class="class-a"> result </span>
<span class="class-b"> result </span>
<span class="class-c"> result </span>

我应该这样做:

results = {
    ResultOne : {
            'name' : 'someName',
            'class' : 'class-a'

    },
    ResultTwo : {
            'name' : 'someName',
            'class' : 'class-b'

    },
}

所以会有类似{{结果.class}}和{结果.名称}}对于每个{result}}?在

或者有其他方法吗? 最好的方法是什么? 谢谢。在


Tags: 文件方法nameloopfor定义样式some
2条回答

您可以使用^{} template tag

{% for result in results %}
    <span class="{% cycle "class-a" "class-b" "class-c" "class-d"%}" > {{result}} </span> <br>
{% endfor %}

最小化模板中的逻辑

我认为你建议的方法是这样的,即在数据进入模板之前对其进行预处理

使用Django模板,复杂的逻辑将很快变得不可维护和不可读

不要混合使用Python和HTML

在Python代码的CSS类中使用class不是很好,所以可以在模型的域内调用它,例如

results = [
    {
            'name' : 'some_name_1',
            'result_type' : 'a'

    },
    {
            'name' : 'some_name_2',
            'result_type' : 'b'

    },
]

并使其使HTML/CSS只使用result-type来解析CSS名称,因此:

^{pr2}$

相关问题 更多 >