Создадим веб-приложение на Python с использованием микрофреймворка Flask и шаблонизатора Jinja с форматированием дата-времени. Мы разработаем мини-проект, в котором покажем, как можно легко форматировать даты и время в ваших шаблонах, используя мощь шаблонизатора Jinja.
Основы
Для начала кратко рассмотрим основные компоненты, с которыми будем работать:
- Python – высокоуровневый программный язык, который мы будем использовать для создания нашего веб-приложения.
- Flask – это микрофреймворк для Python, предназначенный для создания веб-приложений. Он легкий, но при этом мощный и гибкий.
- Jinja – это шаблонизатор для Python, используемый в Flask для создания динамического контента. Jinja позволяет нам использовать структуры данных Python в HTML, облегчая тем самым разработку веб-приложений.

- Прямо в эфире решим типичные задачи программиста только с помощью ChatGPT
- Возможности Python — расскажем что можно делать и сколько на этом зарабатывать?
- Что ждет рынок программирования и почему мы решили сюда пойти
Форматирование даты и времени в Jinja
Форматирование даты и времени часто встречается в разработке. Jinja хорош для работы с датами и временем, позволяя легко преобразовать и отобразить их в необходимом формате.
Использование стандартных фильтров Jinja
Jinja по умолчанию включает в себя ряд фильтров для работы с датами и временем, таких как date для форматирования объектов datetime. Этот фильтр позволяет преобразовывать даты и время в строковый формат, используя строки форматирования, аналогичные тем, которые используются в методе strftime() в Python.
Пример использования фильтра date в шаблоне Jinja:
<p>Дата публикации: {{ article.publish_date|date("%Y-%m-%d") }}</p>
Создание пользовательских фильтров для расширенного форматирования
Хотя стандартные фильтры Jinja обеспечивают базовое форматирование, иногда требуются более специфические форматы. В таких случаях можно определить пользовательские фильтры. Пользовательский фильтр formatdatetime, который мы создали в предыдущем разделе, позволяет нам определять произвольные форматы даты и времени прямо в шаблонах.
Чтобы использовать пользовательский фильтр в шаблоне, просто примените его к объекту даты/времени, как показано ниже:
<h1>Текущее время: {{ current_time|formatdatetime('%A, %d %B %Y, %H:%M') }}</h1>
Этот пример показывает, как легко можно адаптировать отображение дат и времени к нуждам вашего приложения, используя мощь шаблонизатора Jinja.
Настройка проекта
Перед началом работы убедитесь, что у вас установлены Python и pip. Создайте новый каталог для вашего проекта и инициализируйте виртуальное окружение:
mkdir flask_datetime_project cd flask_datetime_project python -m venv venv source venv/bin/activate # для Windows используйте venv\Scripts\activate
Установите Flask и другие необходимые библиотеки:
pip install Flask
Создание мини-проекта
Шаг 1: создание основного приложения Flask
Создайте файл app.py в корневом каталоге вашего проекта и добавьте в него следующий код:
from flask import Flask, render_template from datetime import datetime app = Flask(__name__) @app.route('/') def home(): current_time = datetime.now() return render_template('index.html', current_time=current_time) if __name__ == '__main__': app.run(debug=True)
Шаг 2: работа с шаблонами Jinja
Создайте каталог templates в корневом каталоге проекта и добавьте в него файл шаблона index.html:
<!DOCTYPE html> <html> <head> <title>Flask and Jinja Date Formatting</title> </head> <body> <h1>Текущее время: {{ current_time }}</h1> </body> </html>
Шаг 3: расширенное форматирование даты и времени с помощью фильтров Jinja
Для более сложного форматирования дат и времени мы можем определить собственные фильтры в Jinja. Вернитесь к файлу app.py и добавьте следующую функцию перед определением маршрута:
@app.template_filter(‘formatdatetime’)
def format_datetime(value, format='%B %d, %Y %H:%M'): """Custom filter for formatting datetime objects.""" if value is None: return "" return value.strftime(format)
Измените ваш HTML-шаблон index.html, чтобы использовать новый фильтр:
<!DOCTYPE html> <html> <head> <title>Flask and Jinja Date Formatting</title> </head> <body> <h1>Текущее время: {{ current_time|formatdatetime('%A, %d %B %Y, %H:%M') }}</h1> </body> </html>
Этот код создает фильтр formatdatetime, который позволяет форматировать объекты datetime в шаблонах Jinja, используя любой формат, указанный в качестве аргумента.
Шаг 4: запуск приложения
Запустите приложение с помощью команды:
python app.py
Откройте браузер и перейдите по адресу http://127.0.0.1:5000/, чтобы увидеть текущее время, отформатированное с помощью вашего фильтра.
Заключение
В этой статье мы создали простое веб-приложение на Flask, используя шаблонизатор Jinja для расширенного форматирования даты и времени. Мы узнали, как создавать собственные фильтры в Jinja и теперь вы можете делать свои веб-приложения.
- Освой Python и нейросети и узнай, как гарантированно получить первые 10 заказов
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Создай и прокачай собственного чат-бота
- Подарим подборку бесплатных инструментов для написания кода