Комментарии 11
Я делаю через фильтр, просто передаю ему request и всё.
@register.filter
def local_time(date, request):
if request.user.is_anonymous() or not isinstance(date, datetime.datetime):
return date
timezone = pytz.timezone(request.user.profile.timezone.title)
date = pytz.datetime.datetime(date.year, date.month, date.day, date.hour, date.minute, tzinfo=pytz.utc)
return date.astimezone(timezone)
+6
Тоже вариант. Пара недостатков:
— каждый раз передавать request не особо красиво
— request-а может просто не быть, если мы, например, выполняем что-то по крону
— если понадобиться работать во вьюхе, то придётся преобразовывать время вручную, то же с передачей в форму
— твой фильтр зависит от приложения, поэтому придётся его переписывать если ты, к примеру, станешь использовать другой профиль, захочешь определять время по ip или выбраному городу
Я-то хотел универсальный вариант, да и просто мне нравится немного магии :)
— каждый раз передавать request не особо красиво
— request-а может просто не быть, если мы, например, выполняем что-то по крону
— если понадобиться работать во вьюхе, то придётся преобразовывать время вручную, то же с передачей в форму
— твой фильтр зависит от приложения, поэтому придётся его переписывать если ты, к примеру, станешь использовать другой профиль, захочешь определять время по ip или выбраному городу
Я-то хотел универсальный вариант, да и просто мне нравится немного магии :)
+2
Когда я найду силы разобраться в вашем коде, то наверное переведу свой проект на него, а то действительно не очень удобнов вне шаблонов получается.
Кстати, хотел спросить, а на какой timezone вы устанавливаете сам проект? Имеется ввиду настройка settings.TIME_ZONE
Кстати, хотел спросить, а на какой timezone вы устанавливаете сам проект? Имеется ввиду настройка settings.TIME_ZONE
+1
эстетическое удовольтвие получено!
+1
А как вам вариант, ханить на сервере все в UTC формате. А все преобразования даты-времени делать в браузере на строне клиента с помощью Javascript?
0
Зачем такие извращения? Все что можно делать на сервере, лучше делать на сервере. Кроме того, как насчет версии сайта для мобильных устройств без яваскрипта?
0
Просто возможно ли всегда на сервере определить часовой пояс клиента корректно? А в браузере клиента определишь всегда правильно и достаточно просто (все нужные функции для конвертации и показа есть). И еще, я не противопоставляю свое предложение вашей статье, а просто предлагаю альтернативный вариант. Мне самому интересно, применяет ли его кто-то и в чем минусы.
Про мобильные устройства без ява-скрипта: давайте их не будем рассматривать в данном вопросе.
Про мобильные устройства без ява-скрипта: давайте их не будем рассматривать в данном вопросе.
0
Если javascript отключен, то времена слетают, на это, конечно, можно забить.
Остаются вьюхи и email-ы.
Остаются вьюхи и email-ы.
0
Что-то джангисты активизировались в последние дни. Радует, что Хабр стал похож на блог про Django.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Django и часовые пояса