Этот вводный учебник по Python Flask объясняет, что такое Flask, установку Python, Virtualenv, пример Flask Hello World с разделом о примерах кода, отладке и тестировании:
Создание сайтов - это скорее искусство, чем навык. Оно требует терпения и усердия, а также настойчивости, смелости и самоотверженности, чтобы создать то, что необходимо для настоящего успеха. В наши дни для обучающихся очень важно как можно быстрее войти в курс дела.
Мы создали этот учебник по Python Flask для студентов, чтобы они могли быстро освоить и реализовать как простые, так и сложные веб-программы с помощью Python 3.
Этот учебник по Python Flask больше похож на учебник для начинающих, в котором мы рассмотрим установку Python, Virtualenv и других необходимых пакетов. В этой серии учебников мы также установим Flask вместе с другими необходимыми плагинами Flask. Мы также включили раздел по отладке, тестированию и непрерывной интеграции кода с помощью Git Actions.
Список учебников из этой серии по Flask
Учебник №1: Python Flask Tutorial - Введение во Flask для начинающих
Учебник №2: Flask Шаблон, форма, вид и перенаправление с примерами
Учебник №3: Работа с базой данных Flask - как использовать Flask с базой данных
Урок №4: Макет приложения Flask и проекта Flask с помощью Blueprint & Bootstrap
Урок №5: Паттерны проектирования Flask и лучшие практики для веб-приложений
Урок №6: Учебник по Flask API с примером
Урок №7: Django Vs Flask Vs Node: какой фреймворк выбрать
Урок № 8: Топ-31 популярных вопросов для собеседования по Python Flask с ответами
Что такое фляга
Flask - это фреймворк для веб-разработки. Это фреймворк со встроенным сервером разработки и отладчиком.
Фреймворк Flask сам по себе отличается от других архетипов, поскольку позволяет веб-разработчикам быть гибкими и удобно приспосабливаться к часто выходящим изменениям в сообществе разработчиков программного обеспечения.
Для чего используется колба
Мы используем фреймворк Flask для разработки веб-приложений на языке программирования Python. Он интегрируется с другими сторонними сервисами и API, чтобы придать богатство и смысл разрабатываемому приложению. Основные концепции Flask просты, и он занимает мало места.
Давайте начнем с этого учебника по Python Flask, чтобы понять, что такое веб-разработка с помощью репозитория Flask на GitHub. Однако прежде чем продолжить, пожалуйста, клонируйте проект с Github, чтобы легко следить за обсуждаемыми примерами кода.
Пререквизиты
Помимо перечисленных в этом разделе пунктов, мы рекомендуем создать аккаунт Github. Давайте перейдем к нижеупомянутым шагам в предварительных условиях.
Шаг 1: Установите Python
Проверьте, установлен ли у вас Python 3 или нет. Если нет, то скачайте Python 3 отсюда и установите его в соответствии с вашей операционной системой.
Шаг 2: Создание виртуальной среды Python
Создайте виртуальную среду с помощью приведенной ниже команды.
python3 -m venv venv venv
Используйте приведенную ниже команду для активации виртуальной среды Python.
источник venv/bin/activate
Ниже мы привели пример активации и деактивации виртуальной среды.
Все последующие команды в этом руководстве должны выполняться в активированной виртуальной среде. Установите пакет wheel, чтобы мы могли собирать колеса в виртуальной среде.
pip install wheel
Шаг 3: Загрузка и установка Flask
Нам необходимо выполнить шаги по загрузке Flask и установить Flask с помощью описанных ниже шагов.
Теперь установите Flask.
pip install flask
Некоторые из нас любят работать с последними изменениями в исходном коде. Мы можем использовать приведенную ниже команду для установки последних изменений в исходном коде Flask.
Создайте временный каталог.
mkdir tmp
Теперь установите Flask из репозитория Github. Вам необходимо оставаться подключенным к интернету, чтобы нижеприведенная команда сработала.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Посмотрите на вывод консоли, чтобы убедиться в успешной установке. Теперь проверьте, можем ли мы получить доступ к командам Flask.
flask --help
Вы можете увидеть некоторые исключения об отсутствии приложения Flask. Однако не обращайте на них внимания, поскольку мы не создавали никакого приложения Flask. Наше приложение является экземпляром Flask, который представляет собой обертку на веб-фреймворке Werkzeug и шаблонизаторе Jinja.
Werkzeug
Werkzeug - это инструментарий WSGI. WSGI - это только соглашение о вызове для веб-серверов для переадресации веб-запросы веб-приложениям, написанным на языке программирования Python.
Джинджа
Создание шаблонов - важный навык для веб-разработчиков. Jinja - это полнофункциональный и популярный механизм создания шаблонов для Python. Это довольно выразительный язык и предоставляет надежный набор инструментов для авторов шаблонов.
Шаг 4: Установите MongoDB
Для установки MongoDB выполните следующие шаги. Мы описали шаги для установки в Linux на базе Debian. Если вы используете другую операционную систему, то перейдите по ссылке и выполните установку в соответствии с предполагаемой операционной системой.
Установите gnupg для импорта открытого GPG-ключа MongoDB.
sudo apt-get install gnupg
Теперь импортируйте ключ с помощью приведенной ниже команды.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Создайте файл списка источников в соответствии с вашим дистрибутивом Linux. Мы добавили список источников в соответствии с Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Выполните команду обновления
sudo apt-get update
Теперь установите MongoDB, используя приведенную ниже команду.
sudo apt-get install -y mongodb-org
После успешной установки запустите MongoDB с помощью приведенной ниже команды.
sudo systemctl start mongod
Проверьте состояние MongoDB, используя приведенную ниже команду.
sudo systemctl status mongod
Теперь убедитесь, что mongod автоматически запускается при перезагрузке системы, выполнив показанную ниже команду.
sudo systemctl enable mongod
Теперь проверьте, можете ли вы подключиться к серверу MongoDB с помощью клиента mongo.
mongo
В оболочке mongo попробуйте использовать команды help и show dbs.
Создание приложения Flask
Используйте приведенную ниже команду для установки flask-appbuilder и mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Создайте скелетное приложение со значениями, указанными в качестве комментариев в приведенном ниже фрагменте кода.
flask fab create-app # Задайте следующие значения в анкете командной строки # Имя приложения: flaskTutorialApp # EngineType : MongoEngine
Мы увидим результат, аналогичный приведенному ниже.
Имя вашего нового приложения: exampleApp Тип движка: SQLAlchemy или MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Загрузил скелет приложения, хорошее кодирование!
Посмотрите на расположение проекта и приложения. Ниже показан вывод команды tree.
Давайте посмотрим на файл конфигурации Flask. Это конфигурация по умолчанию, созданная в результате выполнения последней команды. Откомментируйте Киборг как показано ниже.
# Конфигурация тем для Cybord=g # Эти темы находятся в static/appbuilder/css/themes # Мы можем создать свои собственные и легко использовать их, поместив их в ту же структуру dir для переопределения #APP_THEME = "bootstrap-theme.css" # bootstrap по умолчанию #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # тема amelia #APP_THEME = "cosmo.css" # тема cosmo APP_THEME = "cyborg.css" # cyborgтема #APP_THEME = "flatly.css" # тема flatly
Чтобы запустить скелетное приложение, используйте приведенную ниже команду в терминале.
запуск колбы
Flask Hello World
Чтобы создать свою первую программу в flaskTutorialApp, откройте файл views.py в каталоге app и добавьте следующий код. Найдите в файле утверждения import. Добавьте эти утверждения, если они еще не присутствуют.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Это первое представление учебника """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # в конце файла appbuilder.add_view_no_menu(HelloWorld())
Сохраните файл после добавления приведенного выше исходного кода. Перейдите в корневой каталог проекта и используйте приведенную ниже команду для запуска сервера разработки Flask.
запуск колбы
Теперь перейдите по адресу //localhost:5000/hello/, чтобы увидеть результат в браузере.
Отладка
В настоящее время сервер разработки не работает в режиме отладки. Без режима отладки трудно найти ошибки в исходном коде приложения Flask.
Режим отладки во Flask приводит к следующему:
- Режим отладки активирует автоматическую перезагрузку. Это означает, что нам не нужно перезапускать сервер разработки после внесения изменений в исходный код приложения.
- Режим отладки активирует отладчик Python. Мы можем просмотреть значения переменных во время выполнения Exception.
- Режим отладки включает отладку приложения Flask. Мы можем проверять значения различных переменных в сеансах отладки.
Остановите сервер разработки, если он уже запущен. Для этого можно использовать CTRL + C или прерывание клавиатуры.
Используйте следующий код для включения режима отладки и временного запуска сервера разработки.
FLASK_ENV=разработка flask run
Найдите в консоли PIN-код отладчика и запишите его.
Теперь давайте изменим написанное выше представление HelloWorld с помощью следующих строк фрагмента кода. Обратите внимание, что мы ввели пользовательское исключение.
@expose("/") def hello(self): raise Exception("Пользовательское исключение для изучения режима DEBUG") return "Hello, World! from Software Testing Help"
Перейдите по адресу //localhost:5000/hello/, и вы увидите, что приложение вызвало исключение. В браузере отображается трассировка стека, как показано ниже.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Кроме того, посмотрите на консоль, где запущен сервер разработки. Вы увидите, что на этот раз изменения в файле views.py определяются автоматически, и отладочный сервер перезапускается сам по себе. Теперь нам не нужно перезапускать его вручную.
В консоли появятся строки, как показано ниже. Нам нужно записать Debug PIN для дальнейшего использования.
* Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading 2020-06-02 14:59:49,354:INFO:werkzeug: * Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading * Restarting with stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restarting with stat * Debugger is active! * Debugger PIN: 150-849-897
Теперь проверьте трассировку стека в браузере и перейдите к последней строке. Нажмите на нее, чтобы развернуть ее вид, и нажмите на значок CLI, чтобы открыть оболочку в интерактивном режиме.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
После того, как вы откроете его, вы увидите, что в браузере появится запрос Debug PIN. Введите Debug PIN и нажмите OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
После ввода Debug PIN-кода мы можем получить доступ к интерактивной оболочке.
Мы получаем доступ к оболочке из браузера и можем проверять значения переменных, чтобы найти причину исключения и обработать ошибку лучшим способом. Пожалуйста, посмотрите на один из примеров, показанных на рисунке ниже.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Теперь измените код в файле view.py, как показано ниже. Обратите внимание, что мы закомментировали строку, в которой возникло исключение.
@expose("/") def hello(self): # raise Exception("Пользовательское исключение для изучения режима DEBUG") return "Hello, World! from Software Testing Help"
Тестирование приложения Flask
Теперь давайте напишем наш первый тест для разрабатываемого нами приложения Flask. Сначала установите PyTest. PyTest - это фреймворк для тестирования. Он помогает нам писать более качественный код.
Более того, только потому, что мы можем писать модульные тесты во время разработки наших приложений, можно следовать подходу TDD. TDD означает Test-Driven Development. В последующих уроках этой серии мы всегда будем сначала писать тесты, а затем разрабатывать наши представления или модели.
Установите PyTest
pip install pytest
Теперь создайте каталог tests внутри каталога app и в нем создайте файл test_hello.py. Давайте напишем наш первый модульный тест для проверки нашего представления.
Скопируйте следующий фрагмент кода и вставьте его в файл test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ Фикстура pytest для тестового клиента """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ Тестовый метод для проверки вида hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
Используйте приведенную ниже команду pytest для запуска тестов. PyTest автоматически собирает тесты и выводит результаты на стандартный вывод.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Создание рабочего процесса GitHub
Мы используем Git Actions для создания рабочего процесса CI/CD для нашего примера приложения. Выполните описанные ниже шаги для вашего проекта.
Шаг 1: Перейдите на страницу репозитория на GitHub. Нажмите на Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Шаг 2: Прокрутите страницу вниз и найдите существующий шаблон рабочего процесса для пакета Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Шаг 3: Установите пакет Python Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Шаг 4: После того как конфигурация рабочего процесса python-package.yml откроется, обновите ее на основе заданных значений дополнительных тегов yaml.
имя: flaskTutorialApp задания: build: runs-on: ubuntu-latest стратегия: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] шаги: - имя: Start MongoDB использует: supercharge/[email protected] с: mongodb-version: ${{ matrix.mongodb-version }} # другие значения
Мы хотим протестировать наше приложение Flask на последнем дистрибутиве Ubuntu Linux. В дополнение к ОС, мы хотим проводить наши тесты только с использованием Python 3.7 и Python 3.8.
Шаг 5: зафиксируйте python-package.yml с обновленными значениями.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Шаг 6: Коммит на предыдущей странице переводит нас к заданиям GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Шаг 7: [Необязательно]
На странице Github Jobs для примера обучающего приложения мы можем создать значок и разместить его на файле README.md для отображения статуса сборки.
Теперь, всякий раз, когда изменения фиксируются в основной ветке, Git Workflow, как написано в python-package.yml, будет выполняться и запускаться на Git Actions.
Заключение
В этом руководстве мы рассмотрели все базовые концепции, начиная с предварительных условий и заканчивая настройкой рабочего процесса CI/CD для веб-приложения, разработанного с помощью Flask - фреймворка для веб-разработки на основе Python.
Этот учебник охватывает все необходимые шаги, такие как установка Python, загрузка & установка Flask, работа с Flask-Appbuilder, тестирование с PyTest и т.д., чтобы начать веб-разработку с помощью Python. Сообщество веб-разработчиков обычно сравнивает Flask с другим популярным фреймворком для веб-разработки на Python под названием Django.
Мы объясним эти различия, а также сравним эти фреймворки в одном из уроков этой серии.