Pull to refresh

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 или выбраному городу

Я-то хотел универсальный вариант, да и просто мне нравится немного магии :)
Когда я найду силы разобраться в вашем коде, то наверное переведу свой проект на него, а то действительно не очень удобнов вне шаблонов получается.

Кстати, хотел спросить, а на какой timezone вы устанавливаете сам проект? Имеется ввиду настройка settings.TIME_ZONE
settings.TIME_ZONE по часовому поясу сервера, впрочем, это не так важно. В базе (PostgreSql) они хранятся в типе timestamp with timezone, т.е. UTC + часовой пояс, и база сама его переводит в текущий (для базы) пояс при выдаче
А как вам вариант, ханить на сервере все в UTC формате. А все преобразования даты-времени делать в браузере на строне клиента с помощью Javascript?
Зачем такие извращения? Все что можно делать на сервере, лучше делать на сервере. Кроме того, как насчет версии сайта для мобильных устройств без яваскрипта?
Просто возможно ли всегда на сервере определить часовой пояс клиента корректно? А в браузере клиента определишь всегда правильно и достаточно просто (все нужные функции для конвертации и показа есть). И еще, я не противопоставляю свое предложение вашей статье, а просто предлагаю альтернативный вариант. Мне самому интересно, применяет ли его кто-то и в чем минусы.

Про мобильные устройства без ява-скрипта: давайте их не будем рассматривать в данном вопросе.
Всё-таки на сервере частенько нужно знать часовой пояс текущего посетителя, а Javascript-ом можно заполнять значение по-умолчанию в профиле или писать в куку для незарегистрированных
Если javascript отключен, то времена слетают, на это, конечно, можно забить.
Остаются вьюхи и email-ы.
Что-то джангисты активизировались в последние дни. Радует, что Хабр стал похож на блог про Django.
Sign up to leave a comment.

Articles