Flask + Jinja: преобразование UTC в местный часовой пояс

У меня есть приложение Flask, которое хранит часовой пояс пользователя (от pytz.common_timezones) в базе данных.

Я храню записи в БД, используя метку времени UTC.

Я хочу отображать эти записи для конечных пользователей в соответствии с их часовым поясом.

Лучше всего:

  1. Перебирать каждую запись и преобразовывать часовой пояс перед передачей его в render_template?

    --or--

  2. Определить макрос в моем представлении, который выполняет это преобразование в самом шаблоне?

Существуют ли какие-либо рекомендации по преобразованию наивного часового пояса в местный часовой пояс?


person okoboko    schedule 27.06.2014    source источник
comment


Ответы (2)


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

По второму вопросу:

Существуют ли какие-либо рекомендации по преобразованию наивного часового пояса в местный часовой пояс?

Это не имеет особого смысла. «наивный» в смысле python означает «не знающий часового пояса», поэтому на самом деле нет такой вещи, как «наивный часовой пояс».

Если вы имеете в виду преобразование наивного datetime в осознанное datetime, то лучше всего использовать функцию localize, как описано в документация pytz. Не пытайтесь самостоятельно присвоить его свойству tzinfo.

person Matt Johnson-Pint    schedule 27.06.2014

ИМХО, второй вариант лучше, так как серверному коду не нужно знать информацию о часовом поясе каждого клиента. Кроме того, расширения flask, такие как Flask-Moment, значительно упрощают эту задачу.

person Gang Yin    schedule 06.03.2019