使用Django"现在"用于比较日期的模板标签

时间:2017-09-17 04:02:46

标签: django date datetime

我有一个模板标签,可以从模型字段中返回日期。如果日期是今天,我想呈现一些其他内容。 使用现在内置模板标签:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#now,我使用的逻辑类似于此前发布的答案中的答案:

https://stackoverflow.com/a/34959070/5616606

{% now "Y-m-d" as todays %}
{% if self.date|date:"Y-m-d" == todays %}
   ...add some content
{% endif %}

我试图在不创建自定义过滤器,上下文处理器或编辑视图的情况下执行此操作。我认为,问题在于timezone。这可以工作到晚上晚些时候现在返回第二天,而不是当天。我研究了Django的日期和时区文档,但不确定如何使 now 返回的时区与模型字段的时区匹配,而无需创建上下文处理器或编辑视图。

1 个答案:

答案 0 :(得分:0)

项目settings.py 中尝试更改时区:

您的时区放在下面,而不是我的Asia/Kolkata

TIME_ZONE = 'Asia/Kolkata'

评论后编辑 当启用对时区的支持时,Django将日期时间信息以UTC格式存储在数据库中,在内部使用时区感知日期时间对象,并将它们转换为模板和表单中最终用户的时区。

如果您的用户居住在多个时区,非常方便,并且您希望根据每个用户的挂钟显示日期时间信息。

默认情况下禁用时区支持。要启用它,请设置

  

USE_TZ = True

在您的设置文件中。