Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка веб-приложений с использованием фреймворка Flask. В 2 частях. Ч.2. Учебное пособие-1.pdf
Скачиваний:
2
Добавлен:
06.09.2026
Размер:
421 Кб
Скачать
☆

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Тамбовский государственный технический университет»

А. И. ЕЛИСЕЕВ Ю. В. МИНИН В. А. ГРИДНЕВ

РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЙ

СИСПОЛЬЗОВАНИЕМ ФРЕМВОРКА FLASK

ВДВУХ ЧАСТЯХ

Часть 2

Утверждено Учёным советом университета в качестве учебного пособия для студентов 3–4 курсов

направления подготовки 09.03.02 «Информационные системы и технологии» и 1 курса направления подготовки 09.04.02 «Информационные системы и технологии» очной формы обучения

Учебное электронное издание

Тамбов Издательский центр ФГБОУ ВО «ТГТУ»

2021

1

УДК 681

ББК ç973.26-018.4я73 Е51

Рецензенты:

Доктор технических наук, доцент, доцент кафедры «Мехатроника и технологические измерения»

ФГБОУ ВО «ТГТУ»

А. П. Савенков

Кандидат технических наук, доцент, доцент института математики, физики и информационных технологий

ФГБОУ ВО «ТГУ имени Г. Р. Державина»

И. А. Зауголков

Елисеев, А. И.

Е51 Разработка веб-приложений с использованием фреймворка Flask. В 2-х ч. [Электронный ресурс] : учебное пособие / А. И. Елисеев, Ю. В. Минин, В. А. Гриднев. – Тамбов : Издательский центр ФГБОУ ВО «ТГТУ».

ISBN 978-5-8265-2187-8

Ч. 2. – 2021. – 1 электрон. опт. диск (CD-ROM). – Системные требования : ПК не ниже класса Pentium II ; CD-ROM-дисковод ; 14,0 Mb ; RAM ; Windows 95/98/XP ;

мышь. – Загл . с экрана. ISBN 978-5-8265-2438-1

Вторая часть пособия охватывает следующие области веб-разработки: разработка через тестирование, модульное и интеграционное тестирование, покрытие кода тестами, контейнеризация приложений, непрерывная интеграция и непрерывное развёртывание, аутентификация с использованием токенов JWT.

Предназначено для студентов 3–4 курсов направления подготовки 09.03.02 «Информационные системы и технологии» и 1 курса направления подготовки 09.04.02 «Информационные системы и технологии» очной формы обучения.

УДК 681

ББК ç973.26-018.4я73

Все права на размножение и распространение в любой форме остаются за разработчиком. Нелегальное копирование и использование данного продукта

запрещено.

ISBN 978-5-8265-2187-8

(общ.)

© Федеральное государственное бюджетное

ISBN 978-5-8265-2438-1

(Ч. 2)

образовательное учреждение высшего

 

 

образования «Тамбовский государственный

 

 

технический университет»

 

 

(ФГБОУ ВО «ТГТУ»), 2021

2

ВВЕДЕНИЕ

Flask – фреймворк для создания веб-приложений на языке программиро-

вания Python, использующий набор инструментов Werkzeug, а также шаблони-

затор Jinja2. API фреймворка довольно небольшой, что делает его лёгким для изучения и простым в использовании. Но при всём при этом он достаточно мощный, чтобы обеспечивать работу приложений уровня предприятия, обраба-

тывающие большие объёмы трафика.

Цель настоящего пособия – продемонстрировать процесс разработки со-

временного веб-приложения на основе фреймворка Flask. Несмотря на то, что пособие не требует никаких начальных знаний о фреймворке Flask, предполага-

ется, что концепции языка Python, такие как пакеты, модули, функции, декора-

торы и объектно-ориентированное программирование, уже известны.

Вторая часть пособия охватывает следующие области веб-разработки:

разработка через тестирование, модульное и интеграционное тестирование, по-

крытие кода тестами, контейнеризация приложений, непрерывная интеграция и непрерывное развёртывание, аутентификация с использованием токенов JWT.

3

1. ПОДГОТОВКА К РАЗРАБОТКЕ

Первая часть пособия посвящена разворачиванию воспроизводимой сре-

ды разработки с помощью Docker для создания RESTful API на базе языка про-

граммирования Python, системы управления базами данных PostgreSQL и веб-

фреймворка Flask.

1.1.НАЧАЛО РАБОТЫ

Вэтой главе мы построим структуру проекта и создадим первый сервис.

Перед началом работы необходимо создать новый проект и установить веб-

фреймворк Flask:

$ mkdir testdriven-app && cd testdriven-app $ mkdir services && cd services

$ mkdir users && cd users $ mkdir project

$ python3.6 -m venv env $ source env/bin/activate

(env)$ pip install flask==0.12.2

Добавим файл __init__.py в каталог project и создадим первый маршрут:

#services/users/project/__init__.py from flask import Flask, jsonify

#инстанционирование приложения

app = Flask(__name__) @app.route('/users/ping', methods=['GET']) def ping_pong(): return jsonify({

'status': 'success', 'message': 'pong!'

})

Далее настроим инструмент Flask CLI для запуска и управления прило-

жением из командной строки. Flask CLI представляет собой альтернативу паке-

ту Flask Script, но является более новой библиотекой. Добавим файл manage.py

в каталог users следующего содержания:

# services/users/manage.py

from flask.cli import FlaskGroup from project import app

cli = FlaskGroup(app)

4

if __name__ == '__main__':

cli()

Мы создали экземпляр класса FlaskGroup, чтобы расширить стандартный интерфейс командной строки с помощью команд, связанных с приложением

Flask.

Запустим сервер:

(env)$ export FLASK_APP=project/__init__.py

(env)$ python manage.py run

После перехода по адресу http://localhost:5000/users/ping в браузере вы увидите следующий результат:

{

"message": "pong!",

"status": "success"

}

Завершим работу сервера и добавим новый файл с именем config.py в ка-

талог project следующего содержания:

# services/users/project/config.py

class BaseConfig:

"""Базовая конфигурация"""

TESTING = False

class DevelopmentConfig(BaseConfig):

"""Конфигурация для разработки"""

pass

class TestingConfig(BaseConfig):

"""Конфигурация для тестирования"""

TESTING = True

class ProductionConfig(BaseConfig):

"""Конфигурация для производственной среды"""

pass

Обновим файл __init__.py, чтобы можно было использовать конфигура-

цию для разработки при инициализации приложения:

#services/users/project/__init__.py from flask import Flask, jsonify

#инстанционирование приложения

app = Flask(__name__)

# подключение конфигурации app.config.from_object('project.config.DevelopmentConfig')

5

@app.route('/users/ping', methods=['GET'])

def ping_pong():

return jsonify({

'status': 'success',

'message': 'pong!'

})

Снова запустим приложение, на этот раз включив режим отладки:

$ export FLASK_DEBUG=1

$ python manage.py run

*Serving Flask app "project"

*Forcing debug mode on

*Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat

*Debugger is active!

*Debugger PIN: 128-868-573

Теперь, когда мы вносим изменения в код, приложение автоматически переза-

гружается. После этого завершим работу сервера и отключимся от виртуальной среды. Добавим файл requirements.txt следующего содержания в каталог users:

Flask

Наконец, добавим файл. gitignore в корень проекта со следующим содержани-

ем:

__pycache__

env

Инициализируем репозиторий Git и выполним команду git push для отправки ко-

да на GitHub. Затем обновим файл project/__init__.py, чтобы получить значения переменных среды:

#services/users/project/__init__.py import os

from flask import Flask, jsonify

#инстанционирование приложения

app = Flask(__name__)

# подключение конфигурации

app_settings = os.getenv('APP_SETTINGS') app.config.from_object(app_settings) @app.route('/users/ping', methods=['GET']) def ping_pong():

return jsonify({

'status': 'success',

6

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]