2013-01-22 47 views
0

我試圖將UTC時間在我的模板的localtime出於某種原因,這樣做的:的Django的localtime

{% load tz %} 

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

仍然給我UTC

然而

{{ value|localtime }} 

值使用我當地的時區設置給我的值

將settings.py中的USE_TZ設置爲True也似乎什麼都不做

任何想法我做錯了什麼?

回答

0

您試圖顯示的{{ value }}日期/時間對象是一個天真的日期時間對象。天真的日期時間對象不會在模板標籤中轉換 - 您的第一個例子,但會在模板過濾器中轉換 - 您的第二個例子。

See the first warning here

「天真」 與DateTime對象是如何創建的事情。有關如何更改日期/時間對象時知道的信息 - 允許它在模板標籤中使用 - 退房This Thread

0

我創建了一個簡單的中間件來處理所有的這些東西對你:

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

只需安裝它並按照說明操作即可完成!

  1. 安裝Django-易時區

    pip install django-easy-timezones pytz pygeoip

  2. 添加 「易時區」 到你的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. 田田!