- •ВВЕДЕНИЕ
- •1. ПОДГОТОВКА К РАЗРАБОТКЕ
- •1.1. НАЧАЛО РАБОТЫ
- •1.2. ИСПОЛЬЗОВАНИЕ КОНТЕЙНЕРОВ DOCKER
- •1.3. НАСТРОЙКА СУБД POSTGRESQL
- •1.4. НАСТРОЙКА ТЕСТОВ
- •1.6. СОЗДАНИЕ RESTFUL-МАРШРУТОВ
- •1.6.1. МАРШРУТ POST /USERS
- •1.6.3. МАРШРУТ GET /USERS
- •1.6.2. МАРШРУТ GET /USERS/:ID
- •1.7. ИСПОЛЬЗОВАНИЕ ШАБЛОНОВ JINJA
- •1.8. СТРУКТУРА ПРОЕКТА
- •2. ОТЛАДКА ПРИЛОЖЕНИЯ
- •2.1. ПОКРЫТИЕ ТЕСТАМИ И КАЧЕСТВО КОДА
- •2.1.1. ПОКРЫТИЕ КОДА ТЕСТАМИ
- •2.1.2. КАЧЕСТВО КОДА
- •2.2. НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ
- •2.3. ПАНЕЛЬ ИНСТРУМЕНТОВ ОТЛАДКИ FLASK
- •2.4. СТРУКТУРА ПРИЛОЖЕНИЯ
- •3. РАЗВИТИЕ ПРИЛОЖЕНИЯ
- •3.1. ПАКЕТ FLASK MIGRATE
- •3.1.1. ИЗМЕНЕНИЕ МОДЕЛИ
- •3.1.2. НАСТРОЙКА FLASK MIGRATE
- •3.2. РЕФАКТОРИНГ КОДА
- •3.3. ПАКЕТ FLASK BCRYPT
- •3.4. НАСТРОЙКА LOG ROUNDS
- •3.5. ИСПОЛЬЗОВАНИЕ ТОКЕНОВ JWT
- •3.5.1. ПАКЕТ PYJWT
- •3.5.2. РАСШИФРОВКА ТОКЕНА
- •3.6. МАРШРУТЫ ДЛЯ АУТЕНТИФИКАЦИИ
- •3.6.1. МАРШРУТ POST /AUTH/REGISTER
- •3.6.2. МАРШРУТ POST /AUTH/LOGIN
- •3.6.3. МАРШРУТ GET /AUTH/LOGOUT
- •3.6.4. МАРШРУТ GET /AUTH/STATUS
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ
ЗАКЛЮЧЕНИЕ
Фреймворк Flask действительно небольшой. У него в комплекте нет ни набора инструментов, ни библиотек, которыми славятся другие популярные фреймворки Python: Django или Pyramid. Но данный фреймворк создан с по-
тенциалом для расширения. В нём есть набор базовых возможностей, а расши-
рения отвечают за всё остальное. «Чистый» Flask не умеет подключаться к базе данных, проверять данные формы, загружать файлы и т.д. Для добавления этих функций нужно использовать расширения. Этот подход помогает использовать только те расширения, которые на самом деле нужны приложению.
Расширения Flask – это пакеты, которые можно установить, чтобы рас-
ширить возможности Flask. Возможности пакетов расширений варьируются от отправки электронных сообщений до создания полноценных интерфейсов ад-
министратора. Flask обеспечивает гибкость и является более одним из самых доступным фреймворком для новых разработчиков.
76
СПИСОК ЛИТЕРАТУРЫ
1.Документация фреймворка Flask [Электронный ресурс]. – URL : https://flask.palletsprojects.com/en/1.1.x/
2.The Flask Mega-Tutorial [Электронный ресурс]. – URL : https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-worl
3.Grinberg, Ml. Flask Web Development // Developing Web Applications with Python 2nd Edition. – O'Reilly Media; 2 edition, 2018. – 316 p.
77
ОГЛАВЛЕНИЕ
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1. Подготовка к разработке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Начало работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Использование контейнеров Docker . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3. Настройка СУБД PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4. Настройка тестов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.5. Рефакторинг приложения с использованием Flask Blueprint . . . . . . . . 17 1.6. Создание RESTful-маршрутов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.6.1. Маршрут POST /users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.6.2. Маршрут GET /users/:id . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.6.3. Маршрут GET /users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.7. Использование шаблонов Jinja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.8. Структура проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2. Отладка приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1. Покрытие тестами и качество кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1.1. Покрытие кода тестами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.1.2. Качество кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.2. Непрерывная интеграция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.3. Панель инструментов отладки Flask . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4. Структура приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3. Развитие приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.1. Пакет Flask Migrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.1.1. Изменение модели . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.1.2. Настройка Flask Migrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2. Рефакторинг кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3. Пакет Flask Bcrypt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.4. Настройка Log Rounds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.5. Использование токенов JWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.5.1. Пакет PyJWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
78
3.5.2. Расшифровка токена . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.6. Маршруты для аутентификации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.6.1. Маршрут POST /auth/register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.6.2. Маршрут POST /auth/login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.6.3. Маршрут GET /auth/logout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.6.4. Маршрут GET /auth/status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
79
Учебное электронное издание
ЕЛИСЕЕВ Алексей Игоревич МИНИН Юрий Викторович ГРИДНЕВ Виктор Алексеевич
РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЙ
С ИСПОЛЬЗОВАНИЕМ ФРЕМВОРКА FLASK
В ДВУХ ЧАСТЯХ
ЧАСТЬ 2
Учебное пособие
Редактирование Е. С. Мордасовой Компьютерное макетирование М. А. Евсейчевой Обложка, упаковка, тиражирование Т. Ю. Зотовой
ISBN 978-5-8265-2438-1
Подписано к использованию 27.10.2021. Тираж 50 шт. Заказ № 109
Издательский центр ФГБОУ ВО «ТГТУ» 392000, г. Тамбов, ул. Советская, д. 106, к. 14
Телефон (4752) 63-81-08 E-mail: izdatelstvo@tstu.ru
80
