django当地时间

时间:2013-01-22 22:18:53

标签: django django-timezone

我正在尝试将utc次转换为我的模板中的本地时间,并出于某种原因这样做:

{% load tz %}

{% localtime on %}
{{ value }}
{% endlocaltime %}

仍然给我utc的值

然而

{{ value|localtime }} 

使用我当地的时区设置

给我一​​个值

将settings.py中的USE_TZ设置为True似乎也无效

知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

您尝试显示的{{ value }}日期/时间对象是一个天真的日期时间对象。天真的日期时间对象不会在模板标签中转换 - 您的第一个示例,但会在模板过滤器中转换 - 您的第二个示例。

See the first warning here

“Naive”与datetime对象的创建方式有关。有关如何更改日期/时间对象时间的信息 - 允许在模板标签中使用 - 请查看This Thread

答案 1 :(得分:0)

我已经创建了一个简单的中间件来为您处理所有这些内容:

https://github.com/Miserlou/django-easy-timezones

只需安装并按照说明完成即可!

  1. 安装django-easy-timezones

    pip install django-easy-timezones pytz pygeoip

  2. 将“easy-timezones”添加到您的INSTALLED_APPS设置中:

    INSTALLED_APPS = ( ... 'easy-timezones', )

  3. 将EasyTimezoneMiddleware添加到MIDDLEWARE_CLASSES

    MIDDLEWARE_CLASSES = ( ... 'easy-timezones.middleware.EasyTimezoneMiddleware', )

  4. 在设置文件中添加MaxMind GeoIP database的路径:

    GEOIP_DATABASE = '/path/to/your/geoip/database/GeoIP.dat'

  5. 在模板中启用本地时间。

    {% load tz %} The UTC time is {{ object.date }} {% localtime on %} The local time is {{ object.date }} {% endlocaltime %}

  6. 多田!