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

标签 python django formatting django-templates

在 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 %}

关于python - Django 进行条件格式化的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068573/

相关文章:

python - 比较不匹配的正则表达式的速度

python - Flask init-db 没有这样的命令

python - 更改表时出现 UnicodeDecodeError

python - Django 中的分组依据?

javascript - RequireJS 调用 "module"

json - 将 IPv4 地址列表格式化\n 为 json

Excel - 可变长度数字中前导零的数量可变?

python - 在 Selenium 中通过带有特定文本的标签名称选择元素

python - 将 url 参数传递给序列化器

java - 使用递归在 Java 中以正确的格式打印菱形图案