我有一个CSS文件,其中定义了我的一些样式:
.class-a{
/*some styles*/
}
.class-b{
/*some styles*/
}
.class-c{
/*some styles*/
}
.class-d{
/*some styles*/
}
这些样式必须应用于django for-loop
的输出。
for-loop:
{% for result in results %}
<span class="[something]" > {{result}} </span> <br>
{% endfor %}
如何修改此循环,即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'
},
}
为每个{{result}}提供类似{{result.class}}和{{result.name}}的内容?
或者是否存在其他方法? 实现它的最佳方法是什么? 感谢。
答案 0 :(得分:3)
我认为你建议的是要走的路,即在数据进入模板之前对其进行预处理
使用Django模板,复杂逻辑将变得无法维护且无法快速读取
在Python代码的CSS类中使用class
并不是很好,所以可以在模型的域内调用它,例如。
results = [
{
'name' : 'some_name_1',
'result_type' : 'a'
},
{
'name' : 'some_name_2',
'result_type' : 'b'
},
]
并使其成为HTML / CSS只使用result-type
来解析CSS名称,所以:
<span class="class-{{result.result_type}}"> {{result.name}} </span>
答案 1 :(得分:3)
您可以使用cycle
template tag:
{% for result in results %}
<span class="{% cycle "class-a" "class-b" "class-c" "class-d"%}" > {{result}} </span> <br>
{% endfor %}