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

Основы

Для начала кратко рассмотрим основные компоненты, с которыми будем работать:

  • Python – высокоуровневый программный язык, который мы будем использовать для создания нашего веб-приложения.
  • Flask – это микрофреймворк для Python, предназначенный для создания веб-приложений. Он легкий, но при этом мощный и гибкий.
  • Jinja – это шаблонизатор для Python, используемый в Flask для создания динамического контента. Jinja позволяет нам использовать структуры данных Python в HTML, облегчая тем самым разработку веб-приложений.
ОНЛАЙН-ПРАКТИКУМ
КАК «ХАКНУТЬ» PYTHON С ПОМОЩЬЮ CHATGPT
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • Прямо в эфире решим типичные задачи программиста только с помощью 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 и теперь вы можете делать свои веб-приложения.

3-дневный курс
НАУЧИСЬ СОЗДАВАТЬ TELEGRAM-БОТОВ НА PYTHON С CHATGPT
C НУЛЯ ЗА 3 ДНЯ
  • Освой Python и нейросети и узнай, как гарантированно получить первые 10 заказов
  • УЧАСТВОВАТЬ ЗА 0 РУБ.
  • Создай и прокачай собственного чат-бота
Участвовать бесплатно
Вебинар
ФРИЛАНС И ПРОЕКТНАЯ РАБОТАДЛЯ PYTHON-РАЗРАБОТЧИКА
  • Подарим подборку бесплатных инструментов для написания кода
Участвовать бесплатно