Когда мне следует активировать/деактивировать текущий часовой пояс в Django (1.4)?

Итак, Django 1.4 был выпущен с поддержкой часовых поясов, но я смущен тем, как и когда использовать "текущий часовой пояс", о котором продолжают упоминать документы. Когда мне нужно активировать и деактивировать текущий часовой пояс для пользователя?

Я новичок в Django, поэтому я даже не уверен, применит ли контекст текущего часового пояса конкретный пользователь или веб-сервер (охватывающий всех пользователей). Любые разъяснения по этому поводу были бы замечательными.

Ответ 1

Новые функции в Django 1.4 упрощают рендеринг локального времени/даты пользователя в ваших шаблонах django.

Прежде всего, вам нужно настроить параметры TIME_ZONE/USE_TZ.

Затем, чтобы использовать функциональность "текущий часовой пояс", вам нужно знать часовой пояс пользователя. Вероятно, самым надежным способом было бы попросить пользователя напрямую и сохранить эту информацию в профиле пользователя/сеансе. Кроме того, вы можете попробовать установить cookie часового пояса с помощью javascript, используя getTimezoneOffset() или попытайтесь выполнить некоторую геометрию геоида и график времени по местоположению.

Как только вы узнаете значение часового пояса пользователя, вы можете активировать его в своем промежуточном программном обеспечении:

class MyTimezoneMiddleware(object):
    def process_request(self, request):
        user_timezone = request.session.get('current_timezone')

        if user_timezone:
             timezone.activate(user_timezone)
        else:
             timezone.deactivate()