在 Django 中进行条件格式化的正确方法是什么?
我有一个包含日期字段的模型,我想显示一个记录列表,但根据该日期字段的值对行进行着色。例如,匹配今天日期的记录我想要黄色,今天之前的记录我想要绿色,今天之后的记录我想要红色。
您需要在 Django 中的某个地方进行比较,将当前日期与记录中的日期进行比较。
我可以看到三个不同的地方可以进行比较:
- 向我的模型添加一个方法,例如 status(),它返回“过去”、“现在”、“ future ”,然后在模板中使用该方法为行着色。
- 在 View 中,不是将查询集返回到模板,而是预处理列表并比较每条记录,构建一个新的字典,其中包含要在模板中使用的“过去”、“现在”和“ future ”值
- 创建一个新的模板标签来进行比较。
以下哪种方法是正确的 Django 方法?听起来条件格式是经常出现的东西,而且由于您不能在模板中进行任意比较,因此需要一些其他解决方案。
同样适用于更简单的格式规则,例如,如果我想显示学生成绩列表,并且我想将高于 80% 的成绩设为绿色,将低于 30% 的成绩设为红色。
最佳答案
我非常喜欢将所有“业务”逻辑放在 View 函数中,并将所有演示文稿放在模板/CSS 中。
选项 1 是理想的。您返回一个对列表:( date, state ),其中 state 是类名(“过去”、“现在”、“ future ”)。
然后,您的模板将状态信息用作 <span>
的类。 .然后,您的 CSS 会为该跨度提供颜色编码。
您现在可以在不破坏模板的情况下自由更改规则。无需接触 HTML 或 Python 代码即可更改 CSS。
{% for date,state in the_date_list %}
<span class="{{state}}">date</span>
{% endfor %}
关于python - Django 进行条件格式化的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068573/