Python 在Jinja2模板中使用DateTimeFields显示本地时间-Django
使用Django和Jinja2时,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提供了一个名为
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模板。