在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django
Posted
技术标签:
【中文标题】在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django【英文标题】:Displaying local time using DateTimeFields in Jinja2 templates - Django 【发布时间】:2014-06-08 19:05:10 【问题描述】:使用 Django 和 Jinja2 时,datetime
对象似乎不会自动转换为本地时区,即使 USE_TZ=True
也是如此。相反,该值仍为 UTC。
我能够通过创建一个在值上运行 localtime()
的过滤器来解决这个问题。
但是,我不确定如何使用 DateTimeFields
做同样的事情。在模板中,我有 field
,其中字段是DateTimeField
,但是没有地方可以放置过滤器。
将DateTimeField
值转换为当前时区的最佳方法是什么?
【问题讨论】:
谁是当前时区?服务器还是网络浏览器?timezone.get_current_timezone()
返回的服务器时区
啊..查看此链接***.com/questions/14657173/…
@user590028,适用于普通 Django 模板,但不适用于 Jinja2 模板。
【参考方案1】:
谢天谢地,这是一个相对简单的解决方法。 Django 提供了一个名为 template_localtime
的函数(根据文档),它执行以下操作:
“检查值是否为日期时间,并在必要时将其转换为本地时间。”
将其暴露给 Jinja2 模板涉及创建模板过滤器或全局函数。这个例子演示了这两个:
from django.utils.timezone import template_localtime
env = Environment(**kwargs)
env.filters.update(
'localtime': template_localtime,
)
env.globals.update(
'localtime': template_localtime,
)
然后您可以在 Jinja2 模板中使用它们,如下所示:
item.date|localtime
localtime(item.date)
【讨论】:
以上是关于在 Jinja2 模板中使用 DateTimeFields 显示本地时间 - Django的主要内容,如果未能解决你的问题,请参考以下文章