Цей вступний підручник з Python Flask пояснює, що таке Flask, встановлення Python, Virtualenv, приклад Flask Hello World, а також містить розділ з прикладами коду, налагодження та тестування:
Розробка веб-сайтів - це більше мистецтво, ніж навичка. Воно вимагає терпіння і старанності, а також наполегливості, сміливості та відданості справі, щоб створити те, що необхідно для досягнення справжнього успіху. У наш час для учнів важливо якомога швидше приступити до роботи.
Ми створили цей підручник з Python Flask, щоб студенти могли швидко освоїти та реалізувати просте та складне веб-програмування за допомогою Python 3.
Цей підручник з Python Flask більше схожий на підручник для початківців, який охоплює встановлення Python, Virtualenv та інших необхідних пакунків. У цій серії підручників ми також встановимо Flask разом з іншими необхідними плагінами Flask. Ми також включили розділ про налагодження коду, тестування та безперервну інтеграцію за допомогою Git Actions.
Список підручників з цієї серії колб
Урок №1: Python Flask tutorial - вступ до Flask для початківців
Підручник №2: Шаблон колби, форма, перегляд та перенаправлення з прикладами
Урок №3: Робота з базою даних колб - як використовувати колбу з базою даних
Урок №4: Додаток Flask та макет проекту Flask за допомогою Blueprint та Bootstrap
Урок №5: Шаблони дизайну колб та найкращі практики для веб-додатків
Урок №6: Навчальний посібник з API колби з прикладом
Урок №7: Django vs Flask vs Node: який фреймворк обрати
Урок №8: Топ 31 популярних запитань на співбесіді з Python Flask з відповідями
Що таке 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
Щоб активувати віртуальне середовище Python, скористайтеся наведеною нижче командою.
джерело venv/bin/activate
Нижче ми навели приклад активації та деактивації віртуального середовища.
Усі наступні команди у цьому посібнику мають виконуватися в активованому віртуальному середовищі. Встановіть пакет wheel, щоб ми могли створювати колеса у віртуальному середовищі.
колесо для встановлення труби
Крок 3: Завантаження та встановлення колби
Нам потрібно завантажити Flask і встановити Flask, використовуючи наведені нижче кроки.
Тепер встановіть Flask.
встановлення колби pip
Деякі з нас люблять працювати з останніми змінами у вихідному коді. Ми можемо скористатися наведеною нижче командою для встановлення з останніми змінами у вихідному коді Flask.
Створіть тимчасовий каталог.
mkdir tmp
Тепер встановіть Flask з репозиторію Github. Щоб наведена нижче команда спрацювала, вам потрібно залишатися підключеним до інтернету.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Подивіться на виводи консолі, щоб переконатися в успішному встановленні. Тепер перевірте, чи можемо ми отримати доступ до команд Flask.
фляга --допомога
Ви можете побачити деякі винятки щодо відсутності додатків 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 спробуйте скористатися командами help і show dbs.
Створіть додаток Flask
Використовуйте команду нижче, щоб встановити flask-appbuilder та mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Створіть скелет програми зі значеннями, показаними як коментарі у наведеному нижче фрагменті коду.
flask fab create-app # Введіть наступні значення в опитувальнику командного рядка # Назва додатку: flaskTutorialApp # Тип двигуна: MongoEngine
Ми побачимо результат, подібний до наведеного нижче.
Ваша нова назва програми: exampleApp Ваш тип рушія, SQLAlchemy або MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Завантажив скелет програми, гарне кодування!
Подивіться на макет проекту і програми. Нижче ми показали вивід команди tree.
Погляньмо на конфігураційний файл Flask. Це конфігурація за замовчуванням, згенерована в результаті виконання останньої команди. Без коментарів Кіборг. як показано нижче.
# Конфігурація тем для Cybord=g # ці теми знаходяться в static/appbuilder/css/themes # Ми можемо створювати свої власні і легко використовувати їх, розмістивши їх в тій же структурі dir для перевизначення #APP_THEME = "bootstrap-theme.css" # бутстрап за замовчуванням #APP_THEME = "cerulean.css" # блакитний #APP_THEME = "amelia.css" # тема amelia #APP_THEME = "cosmo.css" # тема космо #APP_THEME = "cyborg.css" # тема кіборгтема #APP_THEME = "flatly.css" # тема flatly
Щоб запустити програму-скелет, скористайтеся наведеною нижче командою на терміналі.
пробіг колби
Фляга Hello World
Щоб створити свою першу програму у flaskTutorialApp, відкрийте файл views.py у каталозі програми і додайте наступний код. Знайдіть оператори імпорту, наведені у файлі. Додайте ці оператори, якщо їх ще немає.
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. Ми можемо перевірити значення змінних під час виключення.
- Режим налагодження дозволяє налагоджувати програму Flask. Ми можемо перевіряти значення різних змінних під час сеансів налагодження.
Зупиніть сервер розробки, якщо він вже запущений. Ви можете зробити це за допомогою клавіш CTRL + C або переривання клавіатури.
Використовуйте наступний код, щоб увімкнути режим налагодження і тимчасово запустити сервер розробки.
FLASK_ENV=пробіг колби для розробки
Знайдіть у консолі 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-код для подальшого використання.
* Виявлено зміну в '/work/sth/flaskTutorialApp/app/views.py', перезавантаження 2020-06-02 14:59:49,354:INFO:werkzeug: * Виявлено зміну в '/work/sth/flaskTutorialApp/app/views.py', перезавантаження * Перезапуск зі статусом 2020-06-02 14:59:49,592:INFO:werkzeug: * Перезапуск зі статусом * Налагоджувач активовано! * PIN-код налагоджувача: 150-849-897
Тепер перевірте трасування стека в браузері і перейдіть до останнього рядка. Клацніть на ньому, щоб розгорнути його вигляд, і натисніть на іконку CLI, щоб відкрити оболонку в інтерактивному режимі.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Після того, як ви відкриєте його, ви побачите, що браузер покаже запит на введення Debug PIN-коду. Введіть Debug PIN-код і натисніть на кнопку OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Після введення 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 всередині директорії додатку і в ній створіть файл з назвою 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.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
Ми хочемо протестувати наш додаток 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)
Крок сьомий: [Необов'язково].
На сторінці Github Jobs для прикладу навчального додатку ми можемо створити бейдж і розмістити його у файлі README.md для відображення статусу збірки.
Тепер, щоразу, коли зміни фіксуються в основній гілці, буде виконуватися Git Workflow, як написано в python-package.yml, і запускатися на Git Actions.
Висновок
У цьому навчальному посібнику ми розглянули всі базові концепції від передумов до налаштування робочого процесу CI/CD для веб-додатків, розроблених за допомогою Flask - фреймворку для веб-розробки на основі Python.
Цей підручник охоплює всі необхідні кроки, такі як встановлення Python, завантаження та встановлення Flask, робота з Flask-Appbuilder, тестування за допомогою PyTest тощо, щоб розпочати веб-розробку за допомогою Python. Спільнота веб-розробників зазвичай порівнює Flask з іншим популярним фреймворком для веб-розробки на Python, який називається Django.
Ми пояснимо ці відмінності, а також порівняємо ці фреймворки в одному з уроків цієї серії.