Упатство #5: Шеби за дизајн на колба и најдобри практики за веб-апликации
упатство #6: Упатство за API за колба со пример
Овој воведен туторијал за Python Flask објаснува што е Flask, инсталација на Python, Virtualenv, Flask Hello World пример со дел за примери на код, дебагирање и тестирање:
Развој на веб-страница е повеќе уметност отколку вештина. Потребно е трпение и трудољубивост, заедно со истрајност, храброст и посветеност да се создаде она што е неопходно за да биде вистински успех. Овие денови, од суштинско значење е учениците да ја достигнат брзината што е можно поскоро.
Го создадовме ова упатство за Python Flask за студентите да се подигнат и да имплементираат едноставно, како и сложено веб-програмирање користејќи Python 3 .
Овој туторијал за Python Flask е повеќе како упатство за почетници во колба, кое ќе ги опфати инсталација на Python, Virtualenv и други основни пакети. Во оваа серија на упатства, ние исто така ќе инсталираме Flask заедно со другите неопходни приклучоци за Flask. Вклучивме и дел за отстранување грешки на кодот, тестирање и континуирана интеграција со помош на Git Actions.
Листа на упатства во оваа серија на колби
Упатство #1: Пајтон колба Упатство – Вовед во колба за почетници
Упатство #2: Шаблон за колба, форма, преглед и пренасочување со примери
Упатство #3: Ракување со бази на податоци со колба – Како да се користи колба со база на податоци
Упатство бр. 4: Распоред на апликација за колба и проект на колба со план и засилувач;спомнати чекори во предусловите.
Чекор 1: Инсталирајте Python
Проверете дали сте го инсталирале Python 3 или не. Ако не, тогаш преземете го Python 3 од тука и инсталирајте го според вашиот оперативен систем.
Чекор 2: Создадете виртуелна средина на Python
Создадете виртуелна средина користејќи го подолу команда.
python3 -m venv venv
Користете ја командата подолу за да ја активирате виртуелната средина на Python.
source venv/bin/activate
Додевме пример за активирање и деактивирање на виртуелната средина.
Сите наредни команди во ова упатство треба да работат во активирана виртуелна средина. Инсталирајте го пакетот тркала за да можеме да изградиме тркала во виртуелната средина.
pip install wheel
Чекор 3: Преземање и инсталирање колба
Треба да ги извршиме чекорите за преземање колба и инсталирајте го 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
Шаблонот е основните вештини на веб-програмерите. 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 | sudo apt-key add -
Создајте ја датотеката со список со извори според вашата дистрибуција на Linux. Ја додадовме листата на извори според Debian.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Изврши команда за ажурирање
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 школка, обидете се да ја користите помошта и прикажете команди dbs.
Креирај апликација Flask
Користете ја командата подолу за да инсталирате flask-appbuilder и mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Создајте скелет апликација со вредностите прикажани како коментари во фрагментот од кодот подолу.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Ќе го видиме резултатот сличен на оној даден подолу.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Погледнете го изгледот на проектот и апликацијата. Го прикажавме излезот од командата дрво подолу.
Ајде да ја погледнеме конфигурациската датотека Flask. Тоа е стандардна конфигурација генерирана како резултат на последната команда. Откажете ја темата Киборг , како што е прикажано подолу.
# Theme configuration for Cybord=g # these themes are located on static/appbuilder/css/themes # We can create our own and easily use them by placing them on the same dir structure to override #APP_THEME = "bootstrap-theme.css" # default bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia theme #APP_THEME = "cosmo.css" # cosmo theme APP_THEME = "cyborg.css" # cyborg theme #APP_THEME = "flatly.css" # flatly theme
За да ја извршите апликацијата скелет, користете ја долу дадената команда на терминалот.
flask run
Flask Hello World
За да ја креирате вашата прва програма во flaskTutorialApp, отворете ја датотеката views.py под директориумот на апликациите и додадете го следниот код. Побарајте изјави за увоз дадени во датотеката. Додадете ги овие изјави ако веќе не се присутни.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ This first view of the tutorial """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # at the end of the file appbuilder.add_view_no_menu(HelloWorld())
Зачувајте ја датотеката откако ќе го додадете горенаведениот изворен код. Одете во root директориумот на проектот и користете ја командата подолу за да го извршите развојниот сервер на Flask.
flask run
Сега одете на //localhost:5000/hello/ за да го видите излезот вопрелистувачот.
Дебагирање
Во моментов, развојниот сервер не работи во режимот за отстранување грешки. Без режим за отстранување грешки, тешко е да се најдат грешките во изворниот код на апликацијата Flask.
Режимот за отстранување грешки во Flask резултира со следново:
- Режимот за отстранување грешки го активира Автоматското повторно вчитување. Тоа значи дека не треба да го рестартираме серверот за развој откако ќе направиме промени во изворниот код на апликацијата.
- Режимот за отстранување грешки го активира Python дебагерот. Можеме да ги провериме вредностите на променливите за време на Исклучокот.
- Режимот за отстранување грешки овозможува отстранување грешки на апликацијата Flask. Можеме да ги провериме вредностите на различни променливи во сесиите за отстранување грешки.
Сопрете го серверот за развој ако тој веќе работи. Можете да користите CTRL + C или прекин на тастатурата за да го сторите истото.
Користете го следниов код за да го овозможите режимот за отстранување грешки и привремено да го стартувате серверот за развој.
FLASK_ENV=development flask run
Барај конзолата за PIN-от за отстранување грешки и забележете го.
Сега да го смениме горенаведениот приказ на HelloWorld со следните линии од фрагментот од кодот. Забележете дека воведовме прилагоден исклучок.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Одете на //localhost:5000/hello/, и ќе видите дека апликацијата направи исклучок. Прелистувачот ја прикажува трагата на стек, како што е прикажано подолу.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Понатаму, погледнете ја конзолата каде работи серверот за развој. Ќе откриете дека овој пат, напромените во views.py автоматски се откриваат и серверот за отстранување грешки сам се рестартира. Сега не треба рачно да го рестартираме.
Конзолата ќе има линии, како што е прикажано подолу. Треба да го забележиме 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)
Откако ќе ја отворите, ќе видите дека прелистувачот ќе прикаже барање за PIN за отстранување грешки. Дајте го PIN-кодот за отстранување грешки и кликнете на ОК.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Откако ќе продолжиме напред откако ќе го дадеме PIN-от за отстранување грешки, можеме да пристапиме до интерактивната школка.
Пристапуваме до школката од прелистувачот и може да ги испита вредностите на променливите за да ја пронајде причината за Исклучокот и да се справи со грешката на подобар начин. Ве молиме погледнете еден од примерите прикажани на сликата подолу.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Сега сменете го кодот во view.py, како што е прикажано подолу. Забележете дека коментиравме за линијата што го имаше покачениот Исклучок.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Тестирање на апликацијата Flask
Сега да го напишеме нашиот прв тест за апликацијата Flask што ја развиваме. Прво, инсталирајте го PyTest. PyTest е рамка за тестирање. Тоа ни помага да пишуваме подобар код.
Покрај тоа, само затоа што можеме да пишуваме единечни тестови додека ги развиваме нашите апликации, можно е да го следиме пристапот TDD. TDD кратенка од Тест-управуван развој. Во нашите последователни упатства заоваа серија, ние секогаш прво ќе пишуваме тестови и ќе ги развиваме нашите погледи или модели.
Инсталирај го PyTest
pip install pytest
Сега креирај директориум наречен тестови во директориумот на апликациите и во тој креирајте датотека наречена test_hello.py. Ајде да го напишеме нашиот прв единечен тест за да го тестираме нашиот приказ.
Копирајте го следниов фрагмент од код и залепете го во 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.
![](/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)
Чекор 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.
Ќе ги објасниме овие разлики и исто така ќе ги споредиме овие рамки во едно од упатствата во оваа серија.