Този уводен урок по 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: Урок за API на Flask с пример
Урок № 7: Django Vs Flask Vs Node: Коя рамка да изберете
Урок № 8: Топ 31 Популярни въпроси за интервюта с Python Flask с отговори
Какво е 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.
source venv/bin/activate
По-долу сме дали пример за активиране и деактивиране на виртуалната среда.
Всички следващи команди в този урок трябва да се изпълняват в активирана виртуална среда. Инсталирайте пакета wheel, за да можем да изграждаме колела във виртуалната среда.
pip install колело
Стъпка 3: Изтегляне и инсталиране на Flask
Трябва да извършим стъпките за изтегляне на Flask и да инсталираме Flask, като използваме посочените по-долу стъпки.
Сега инсталирайте Flask.
pip инсталиране на 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
Шаблонирането е основен набор от умения на уеб разработчиците. Jinja е напълно функционален и популярен шаблонен двигател за Python. Той е доста експресивен език и предоставя солиден набор от инструменти на авторите на шаблони.
Стъпка 4: Инсталиране на MongoDB
Следвайте посочените по-долу стъпки, за да инсталирате MongoDB. Посочили сме стъпките за инсталиране на MongoDB в Linux, базиран на Дебиан. Ако използвате друга операционна система, отворете връзката и инсталирайте според предназначението на операционната система.
Инсталирайте 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 # Тип на двигателя : MongoEngine
Ще видим изход, подобен на този, даден по-долу.
Вашето ново име на приложението: exampleApp Вашият тип двигател, SQLAlchemy или MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Изтеглих скелетното приложение, добро кодиране!
Разгледайте оформлението на проекта и приложението. По-долу сме показали резултата от командата tree.
Нека да разгледаме файла с конфигурацията на Flask. Това е конфигурацията по подразбиране, генерирана в резултат на последната команда. Разкоментирайте Киборг както е показано по-долу.
# Конфигурация на темите за Cybord=g # тези теми се намират в static/appbuilder/css/themes # Можем да създадем свои собствени и лесно да ги използваме, като ги поставим в същата структура на директорията, за да ги заменим #APP_THEME = "bootstrap-theme.css" # bootstrap по подразбиране #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia theme #APP_THEME = "cosmo.css" # cosmo theme APP_THEME = "cyborg.css" # cyborgТема #APP_THEME = "flatly.css" # flatly тема
За да стартирате скелетното приложение, използвайте дадената по-долу команда в терминала.
пускане на колбата
Flask Здравей, свят
За да създадете първата си програма в приложението 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! от Software Testing Help" # в края на файла appbuilder.add_view_no_menu(HelloWorld())
Запазете файла след добавянето на горния изходен код. Отидете в главната директория на проекта и използвайте долната команда, за да стартирате сървъра за разработка на Flask.
пускане на колбата
Сега преминете към //localhost:5000/hello/, за да видите резултата в браузъра.
Отстраняване на грешки
Понастоящем сървърът за разработка не работи в режим за отстраняване на грешки. Без режим за отстраняване на грешки е трудно да се открият грешките в изходния код на приложението Flask.
Режимът за отстраняване на грешки във Flask води до следното:
- Режимът за отстраняване на грешки активира функцията за автоматично презареждане. Това означава, че не е необходимо да рестартираме сървъра за разработка, след като направим промени в изходния код на приложението.
- Режимът Debug активира дебъгъра на Python. Можем да проверяваме стойностите на променливите по време на Exception.
- Режимът за отстраняване на грешки позволява отстраняване на грешки в приложението Flask. Можем да проверяваме стойностите на различни променливи в сесиите за отстраняване на грешки.
Спрете сървъра за разработка, ако той вече е стартиран. Можете да използвате CTRL + C или прекъсване на клавиатурата, за да направите същото.
Използвайте следния код, за да активирате режима за отстраняване на грешки и да стартирате временно сървъра за разработка.
FLASK_ENV=development flask run
Потърсете в конзолата ПИН кода на дебъгъра и го запишете.
Сега нека да променим написания по-горе изглед 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 се откриват автоматично и сървърът за отстраняване на грешки се рестартира сам. Сега не е необходимо да го рестартираме ръчно.
В конзолата ще се появят редове, както е показано по-долу. Трябва да запишем ПИН кода за дебъгване за по-късно.
* Открита промяна в '/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: * Рестартиране със стат * Дебъгерът е активен! * ПИН на дебъгер: 150-849-897
Сега проверете проследяването на стека в браузъра и отидете на последния ред. Щракнете върху него, за да разширите изгледа му, и щракнете върху иконата CLI, за да отворите обвивката в интерактивен режим.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
След като го отворите, ще видите, че браузърът ще покаже съобщение за ПИН код за отстраняване на грешки. Задайте ПИН кода за отстраняване на грешки и щракнете върху OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
След като продължим напред, след като дадем ПИН кода за дебъгване, можем да получим достъп до интерактивната обвивка.
Получаваме достъп до обвивката от браузъра и можем да проверим стойностите на променливите, за да открием причината за изключването и да се справим с грешката по по-добър начин. Моля, разгледайте един от примерите, показани на изображението по-долу.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Сега променете кода в view.py, както е показано по-долу. Обърнете внимание, че сме коментирали реда, в който е възникнало изключението.
@expose("/") def hello(self): # raise Exception("Потребителско изключение за изучаване на режима DEBUG") return "Hello, World! от Software Testing Help"
Тестване на приложението Flask
Сега нека да напишем първия си тест за приложението Flask, което разработваме. Първо, инсталирайте PyTest. PyTest е рамка за тестване. Тя ни помага да пишем по-добър код.
Освен това, само защото можем да пишем unit тестове, докато разработваме приложенията си, е възможно да следваме подхода TDD. TDD е съкращение от Test-Driven Development (разработка, управлявана от тестове). В следващите ни уроци от тази поредица винаги първо ще пишем тестове и ще разработваме нашите изгледи или модели.
Инсталиране на PyTest
pip install pytest
Сега създайте директория, наречена tests, в директорията на приложението и в нея създайте файл, наречен test_hello.py. Нека напишем първия си unit test, за да тестваме нашия изглед.
Копирайте следния фрагмент от код и го поставете в test_hello.py.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ A pytest fixture for test client """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ A test method to test view 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: работи на: 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, както е записано в python-package.yml, ще бъде следван и изпълняван в Git Actions.
Заключение
В този урок покрихме всички основни концепции - от предпоставките до създаването на CI/CD работен процес за уеб приложение, разработено с помощта на Flask - базирана на Python рамка за уеб разработка.
Това ръководство обхваща всички необходими стъпки, като инсталиране на Python, изтегляне на & инсталиране на Flask, работа с Flask-Appbuilder, тестване с PyTest и т.н., за да започнете да разработвате уеб сайтове с помощта на Python. Общността за разработване на уеб сайтове обикновено сравнява Flask с друга популярна рамка за разработване на уеб сайтове в Python, наречена Django.
Ще обясним тези разлики и ще сравним тези рамки в един от уроците от тази поредица.