Падручнік №5: Шаблоны праектавання Flask і лепшыя практыкі для вэб-прыкладанняў
Падручнік №6: Падручнік Flask API з прыкладам
Гэты ўводны падручнік па Python Flask тлумачыць, што такое Flask, усталяванне Python, Virtualenv, прыклад Flask Hello World з раздзелам пра прыклады кода, адладку і тэсціраванне:
Распрацоўка вэб-сайта - гэта больш мастацтва, чым майстэрства. Гэта патрабуе цярпення і стараннасці, а таксама настойлівасці, мужнасці і самаадданасці, каб стварыць тое, што неабходна для сапраўднага поспеху. У нашы дні навучэнцам важна як мага хутчэй дасягнуць хуткасці.
Мы стварылі гэты падручнік па Python Flask, каб студэнты маглі навучыцца хуткасці і рэалізаваць простае і складанае вэб-праграмаванне з дапамогай Python 3 .
Гэты падручнік па Python Flask больш падобны да падручніка для пачаткоўцаў у flask, які ахоплівае ўстаноўка Python, Virtualenv і іншых неабходных пакетаў. У гэтай серыі падручнікаў мы таксама ўсталюем Flask разам з іншымі неабходнымі ўбудовамі Flask. Мы таксама ўключылі раздзел аб адладцы кода, тэсціраванні і бесперапыннай інтэграцыі з выкарыстаннем дзеянняў Git.
Спіс падручнікаў у гэтай серыі Flask
Падручнік №1: Python Flask Падручнік – Уводзіны ў Flask для пачаткоўцаў
Падручнік №2: Шаблон Flask, форма, прагляд і перанакіраванне з прыкладамі
Падручнік №3: Апрацоўка базы даных Flask – Як выкарыстоўваць Flask з базай даных
Падручнік №4: Прыкладанне Flask і макет праекта Flask з Blueprint &згаданыя крокі ў папярэдніх умовах.
Крок 1: Усталюйце Python
Праверце, ці ўсталяваны вы Python 3 ці не. Калі няма, спампуйце Python 3 адсюль і ўсталюйце яго ў адпаведнасці з вашай аперацыйнай сістэмай.
Крок 2: Стварыце віртуальнае асяроддзе Python
Стварыце віртуальнае асяроддзе з дапамогай каманда ніжэй.
python3 -m venv venv
Выкарыстоўвайце каманду ніжэй, каб актываваць віртуальнае асяроддзе Python.
source venv/bin/activate
Ніжэй мы прывялі прыклад актывацыі і дэактывацыі віртуальнага асяроддзя.
Усе наступныя каманды ў гэтым падручніку павінны выконвацца ў актываваным віртуальным асяроддзі. Усталюйце пакет колаў, каб мы маглі ствараць колы ў віртуальным асяроддзі.
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
Стварэнне шаблонаў - гэта асноўны набор навыкаў вэб-распрацоўшчыкаў. 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. Гэта стандартная канфігурацыя, створаная ў выніку апошняй каманды. Раскаментуйце тэму Cyborg , як паказана ніжэй.
# 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())
Захавайце файл пасля дадання прыведзенага вышэй зыходнага кода. Перайдзіце ў каранёвы каталог праекта і выкарыстоўвайце наступную каманду, каб запусціць сервер распрацоўкі Flask.
flask run
Цяпер перайдзіце да //localhost:5000/hello/, каб убачыць вывад убраўзер.
Адладка
У цяперашні час сервер распрацоўкі не працуе ў рэжыме адладкі. Без рэжыму адладкі цяжка знайсці памылкі ў зыходным кодзе прыкладання Flask.
Рэжым адладкі ў Flask прыводзіць да наступнага:
- Рэжым адладкі актывуе аўтаматычную перазагрузку. Гэта азначае, што нам не трэба перазапускаць сервер распрацоўкі пасля ўнясення змяненняў у зыходны код прыкладання.
- Рэжым адладкі актывуе адладчык Python. Мы можам правяраць значэнні зменных падчас выключэння.
- Рэжым адладкі дазваляе адладку прыкладання Flask. Мы можам праверыць значэнні розных зменных у сеансах адладкі.
Спыніце сервер распрацоўкі, калі ён ужо працуе. Вы можаце выкарыстоўваць CTRL + C або перапыненне клавіятуры, каб зрабіць тое ж самае.
Выкарыстоўвайце наступны код, каб уключыць рэжым адладкі і часова запусціць сервер распрацоўкі.
FLASK_ENV=development flask run
Пошук кансоль для PIN-кода Debugger і запішыце яго.
Цяпер давайце зменім напісаны вышэй выгляд 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-код адладкі і націсніце OK.
![](/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
Цяпер стварыце каталог пад назвай tests у каталогу прыкладання і ў гэтым стварыць файл пад назвай 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 для прыкладу дапаможніка мы можам стварыць значок і размясціць гэта ў файле README.md для адлюстравання стану зборкі.
Цяпер кожны раз, калі змены ўносяцца ў галоўную галінку, Git Workflow, як напісана ў python-package.yml, будзе адсочвацца і запускацца ў Git Actions .
Выснова
У гэтым уроку мы разгледзелі ўсе асноўныя канцэпцыі ад перадумоў да наладжвання працоўнага працэсу CI/CD для вэб-праграмы, распрацаванай з выкарыстаннем Flask – фреймворка вэб-распрацоўкі на аснове Python.
Гэты падручнік ахоплівае ўсе неабходныя крокі, такія як усталяванне Python, загрузка & усталяванне Flask, праца з Flask-Appbuilder, тэставанне з PyTest і г.д., каб пачаць вэб-распрацоўку з дапамогай Python. Супольнасць вэб-распрацоўшчыкаў звычайна параўноўвае Flask з іншай папулярнай платформай вэб-распрацоўкі Python пад назвай Django.
Мы растлумачым гэтыя адрозненні, а таксама параўнаем гэтыя структуры ў адным з падручнікаў гэтай серыі.