Comments 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)
Тоже вариант. Пара недостатков:
— каждый раз передавать request не особо красиво
— request-а может просто не быть, если мы, например, выполняем что-то по крону
— если понадобиться работать во вьюхе, то придётся преобразовывать время вручную, то же с передачей в форму
— твой фильтр зависит от приложения, поэтому придётся его переписывать если ты, к примеру, станешь использовать другой профиль, захочешь определять время по ip или выбраному городу
Я-то хотел универсальный вариант, да и просто мне нравится немного магии :)
— каждый раз передавать request не особо красиво
— request-а может просто не быть, если мы, например, выполняем что-то по крону
— если понадобиться работать во вьюхе, то придётся преобразовывать время вручную, то же с передачей в форму
— твой фильтр зависит от приложения, поэтому придётся его переписывать если ты, к примеру, станешь использовать другой профиль, захочешь определять время по ip или выбраному городу
Я-то хотел универсальный вариант, да и просто мне нравится немного магии :)
Когда я найду силы разобраться в вашем коде, то наверное переведу свой проект на него, а то действительно не очень удобнов вне шаблонов получается.
Кстати, хотел спросить, а на какой timezone вы устанавливаете сам проект? Имеется ввиду настройка settings.TIME_ZONE
Кстати, хотел спросить, а на какой timezone вы устанавливаете сам проект? Имеется ввиду настройка settings.TIME_ZONE
эстетическое удовольтвие получено!
А как вам вариант, ханить на сервере все в UTC формате. А все преобразования даты-времени делать в браузере на строне клиента с помощью Javascript?
Зачем такие извращения? Все что можно делать на сервере, лучше делать на сервере. Кроме того, как насчет версии сайта для мобильных устройств без яваскрипта?
Просто возможно ли всегда на сервере определить часовой пояс клиента корректно? А в браузере клиента определишь всегда правильно и достаточно просто (все нужные функции для конвертации и показа есть). И еще, я не противопоставляю свое предложение вашей статье, а просто предлагаю альтернативный вариант. Мне самому интересно, применяет ли его кто-то и в чем минусы.
Про мобильные устройства без ява-скрипта: давайте их не будем рассматривать в данном вопросе.
Про мобильные устройства без ява-скрипта: давайте их не будем рассматривать в данном вопросе.
Если javascript отключен, то времена слетают, на это, конечно, можно забить.
Остаются вьюхи и email-ы.
Остаются вьюхи и email-ы.
Что-то джангисты активизировались в последние дни. Радует, что Хабр стал похож на блог про Django.
Sign up to leave a comment.
Django и часовые пояса