джанго местное время

Я пытаюсь преобразовать время utc в локальное время в своем шаблоне и по какой-то причине делаю:

{% load tz %}

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

все еще дает мне значение в utc

Однако

{{ value|localtime }} 

дает мне значение, используя настройки моего местного часового пояса

установка USE_TZ в settings.py на True также, похоже, ничего не делает

Любая идея, что я делаю неправильно?


person 9-bits    schedule 22.01.2013    source источник


Ответы (2)


Объект даты/времени {{ value }}, который вы пытаетесь показать, является наивным объектом даты и времени. Наивные объекты даты и времени не будут конвертироваться в теги шаблона - ваш первый пример, но будут конвертироваться в фильтры шаблона - ваш второй пример.

См. первое предупреждение здесь

«Наивный» связан с тем, как создается объект datetime. Для получения информации о том, как изменить время объекта даты/времени, позволяя использовать его в тегах шаблона, ознакомьтесь с Эта тема

person Dan Hoerst    schedule 22.01.2013

Я создал простое промежуточное программное обеспечение для обработки всего этого для вас:

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 в файле настроек:

    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. Тада!

person Rich Jones    schedule 17.07.2013