django localtime模板过滤器不起作用

时间:2016-09-23 06:12:31

标签: django datetime

我使用django 1.10来显示日期时间。日期时间存储在mongodb中,并且它总是没有时区信息的UTC,所以我需要根据机器运行django的时区显示日期时间。

首先,在settings.py中添加

TIME_ZONE = 'Asia/Chongqing'
USE_I18N = True
USE_L10N = True
USE_TZ = True

然后在views.py中添加:

import pytz
from tzlocal import get_localzone
from django.utils import timezone
local_tz = get_localzone()
timezone.activate(local_tz)
# make datetime object and pass it to html to render
template.html中的

{% load tz %}
<table border="1">
{% for i in online %}
    <tr>
        <td align='center'>{{ i.time|localtime}}</td>
    </tr>
{% endfor %}
</table>

但是日期时间仍然是UTC,即使我将tzinfo添加到传递给html的日期时间。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

为了使本地时间过滤器起作用,您需要包括:

{% load tz %}

https://docs.djangoproject.com/en/2.2/topics/i18n/timezones/#std:templatefilter-localtime