Python 在Jinja2模板中使用DateTimeFields显示本地时间-Django

Python 在Jinja2模板中使用DateTimeFields显示本地时间-Django,python,django,django-forms,django-templates,jinja2,Python,Django,Django Forms,Django Templates,Jinja2,使用Django和Jinja2时,datetime对象似乎不会自动转换为本地时区,即使USE_TZ=True。相反,该值仍以UTC为单位 我可以通过创建一个对值运行localtime()的过滤器来解决这个问题 但是,我不知道如何使用DateTimeFields做同样的事情。在模板中,我有{{field},其中field是DateTimeField,但是没有地方放置过滤器 将DateTimeField值转换为当前时区的最佳方法是什么?谢天谢地,这是一个相对容易的解决方案。Django提供了一个名为

使用Django和Jinja2时,
datetime
对象似乎不会自动转换为本地时区,即使
USE_TZ=True
。相反,该值仍以UTC为单位

我可以通过创建一个对值运行
localtime()
的过滤器来解决这个问题

但是,我不知道如何使用
DateTimeFields
做同样的事情。在模板中,我有
{{field}
,其中field是
DateTimeField
,但是没有地方放置过滤器


DateTimeField
值转换为当前时区的最佳方法是什么?

谢天谢地,这是一个相对容易的解决方案。Django提供了一个名为
template\u 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) }}

谁是当前时区?服务器或web浏览器?由
时区返回的服务器时区。获取\u current\u timezone()
Ahh..查看此链接@user590028,它适用于普通Django模板,但不适用于Jinja2模板。