python - Django 进行条件格式化的方法

在 Django 中进行条件格式化的正确方法是什么?

我有一个包含日期字段的模型,我想显示一个记录列表,但根据该日期字段的值对行进行着色。例如,匹配今天日期的记录我想要黄色,今天之前的记录我想要绿色,今天之后的记录我想要红色。

您需要在 Django 中的某个地方进行比较,将当前日期与记录中的日期进行比较。

我可以看到三个不同的地方可以进行比较:

  1. 向我的模型添加一个方法,例如 status(),它返回“过去”、“现在”、“ future ”,然后在模板中使用该方法为行着色。
  2. 在 View 中,不是将查询集返回到模板,而是预处理列表并比较每条记录,构建一个新的字典,其中包含要在模板中使用的“过去”、“现在”和“ future ”值
  3. 创建一个新的模板标签来进行比较。

以下哪种方法是正确的 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 %}

https://stackoverflow.com/questions/1068573/

相关文章:

c# - Visual Studio/ReSharper 代码格式化 - C#

python - 是否可以使用 weasyprint 对页脚进行精美的格式化?

excel - 条件格式 : making cells colorful

PHP - 只读电子表格文件类型?

powershell - 将整数 x.xxxxx 格式化为 xx.xxx

python - 如何在 Python 中检查字符串是否具有格式参数?

io - 使用英特尔 Fortran 编译器避免列表导向输出中的换行符

c# - 如何格式化带有千位分隔符和小数点分隔符的 Windows 窗体文本框以进行数字输入

mysql - MySQL中的字符串格式化

python - Python中的十进制对齐格式