РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
515 of 643 menu

Метод timezone_selector

Метод timezone_selector применяется к объекту Babel и регистрирует функцию обратного вызова, которая автоматически вызывается для определения часового пояса текущего пользователя. Первым параметром передаётся функция-селектор, принимающая без аргументов и возвращающая строку с именем часового пояса в формате базы данных IANA, например 'Europe/Moscow' или 'UTC'. Если функция вернёт None, будет использован часовой пояс по умолчанию, заданный при настройке приложения.

Синтаксис

babel.timezone_selector(selector)

Пример

Давайте настроим Babel и зарегистрируем простейший селектор, который всегда возвращает 'Europe/Moscow':

from flask import Flask from flask_babel import Babel app = Flask(__name__) app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC' babel = Babel(app) def get_timezone(): return 'Europe/Moscow' babel.timezone_selector(get_timezone)

Теперь при каждом запросе Flask-Babel будет вызывать функцию get_timezone и использовать полученный часовой пояс для форматирования дат и времени.

Пример

Давайте определим часовой пояс на основе данных из сессии пользователя:

from flask import Flask, session from flask_babel import Babel app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC' babel = Babel(app) def get_timezone(): return session.get('timezone', 'UTC') babel.timezone_selector(get_timezone)

Если в сессии пользователя сохранён ключ timezone, будет использован он. Иначе применится значение по умолчанию - 'UTC'.

Пример

Давайте используем метод timezone_selector вместе с localeselector и отформатируем дату в шаблоне:

from flask import Flask, session, render_template from flask_babel import Babel app = Flask(__name__) app.config['SECRET_KEY'] = 'abcde' app.config['BABEL_DEFAULT_LOCALE'] = 'en' app.config['BABEL_DEFAULT_TIMEZONE'] = 'UTC' babel = Babel(app) def get_locale(): return session.get('lang', 'en') def get_timezone(): return session.get('timezone', 'Europe/Moscow') babel.localeselector(get_locale) babel.timezone_selector(get_timezone) @app.route('/') def index(): return render_template('index.html')

Шаблон для вывода текущей даты с учётом часового пояса:

<p>{{ get_timezone() }}</p>

Результат выполнения кода для адреса / при пустой сессии:

<p>Europe/Moscow</p>

Смотрите также

  • класс Babel,
    который управляет интернационализацией приложения
  • метод localeselector,
    который задаёт функцию выбора локали пользователя
  • метод timezone_selector,
    который выбирает часовой пояс по имени локали
  • функцию get_timezone,
    которая возвращает текущий часовой пояс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить