Tutorial #5: Modelet e dizajnit të Flask dhe praktikat më të mira për aplikacionet në ueb
tutorial #6: Tutorial i Flask API me shembull
Ky tutorial hyrës i Python Flask shpjegon se çfarë është Flask, instalimi i Python, Virtualenv, shembulli Flask Hello World me një seksion mbi shembujt e kodit, korrigjimin dhe testimin:
Zhvillimi i faqes në internet është më shumë një art sesa një aftësi. Kërkon durim dhe zell, së bashku me këmbëngulje, guxim dhe përkushtim për të krijuar atë që është e nevojshme që të jetë një sukses i vërtetë. Këto ditë, është thelbësore që nxënësit të arrijnë shpejtësinë sa më shpejt të jetë e mundur.
Ne kemi krijuar këtë tutorial të Python Flask që studentët të rriten me shpejtësi dhe të zbatojnë programim të thjeshtë dhe kompleks të uebit duke përdorur Python 3 .
Ky tutorial i Python Flask është më shumë si një tutorial fillestar i balonës, i cili do të mbulojë instalimi i Python, Virtualenv dhe paketave të tjera thelbësore. Në këtë seri mësimesh, ne do të instalojmë gjithashtu Flask së bashku me shtojcat e tjera të nevojshme Flask. Ne kemi përfshirë gjithashtu një seksion mbi korrigjimin e kodit, testimin dhe integrimin e vazhdueshëm duke përdorur Git Actions.
Lista e udhëzuesve në këtë seri flask
Tutorial #1: Python Flask Tutorial – Hyrje në Flask për fillestarët
Udhëzues #2: Modeli, Forma, Shikoni dhe Ridrejtuar me Shembuj të Flask
Tutorial #3: Trajtimi i bazës së të dhënave të Flask – Si të përdorni Flask me një bazë të dhënash
Udhëzues #4: Paraqitja e aplikacionit dhe projektit të Flask Flask me Blueprint &hapat e përmendur në parakushtet.
Hapi 1: Instalo Python
Kontrollo nëse e ke instaluar Python 3 apo jo. Nëse jo, atëherë shkarkoni Python 3 nga këtu dhe instaloni atë sipas sistemit tuaj operativ.
Hapi 2: Krijoni një mjedis virtual të Python
Krijoni një mjedis virtual duke përdorur komandën e mëposhtme.
python3 -m venv venv
Përdor komandën e mëposhtme për të aktivizuar mjedisin virtual Python.
source venv/bin/activate
Ne kemi dhënë një shembull të aktivizimit dhe çaktivizimit të mjedisit virtual më poshtë.
Të gjitha komandat pasuese në këtë tutorial duhet të ekzekutohen në një mjedis virtual të aktivizuar. Instaloni paketën e rrotave në mënyrë që të mund të ndërtojmë rrota brenda mjedisit virtual.
pip install wheel
Hapi 3: Shkarkimi dhe instalimi i balonës
Duhet të kryejmë hapat e shkarkimit të balonës dhe instaloni Flask duke përdorur hapat e përmendur më poshtë.
Tani instaloni Flask.
pip install flask
Disa prej nesh pëlqejnë të punojnë së bashku me ndryshimet më të fundit të kodit burimor. Ne mund të përdorim komandën e dhënë më poshtë për të instaluar me ndryshimet më të fundit në burimet e Flask.
Bëni një direktori të përkohshme.
mkdir tmp
Tani instaloni Flask nga depoja Github. Duhet të qëndroni të lidhur me internetin që komanda e mëposhtme të funksionojë.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Shikoni daljet e konsolës për të kontrolluar instalimin e suksesshëm. Tani kontrolloni nëse mund t'i qasemi komandave Flask.
sudo apt-get update
Mund të shihni disa përjashtime në lidhje me mungesën e një Flaskaplikacion. Sidoqoftë, neglizhoni ato pasi ne nuk kemi krijuar asnjë aplikacion Flask. Aplikacioni ynë është një shembull i Flask, i cili është një mbështjellës në kornizën e uebit të Werkzeug dhe motorin e modelimit Jinja.
Werkzeug
Werkzeug është një paketë veglash WSGI. WSGI është vetëm një konventë thirrëse për serverët e uebit për të përcjellë kërkesat në ueb tek aplikacionet e uebit të shkruara në gjuhën e programimit Python.
Jinja
Templating është një aftësitë thelbësore të zhvilluesve të uebit. Jinja është një motor modelimi i plotë dhe popullor për Python. Është një gjuhë mjaft shprehëse dhe ofron një grup të fuqishëm mjetesh për autorët e shablloneve.
Hapi 4: Instalo MongoDB
Ndiq hapat e përmendur më poshtë për të instaluar MongoDB. Ne kemi përshkruar hapat për ta instaluar atë në një Linux të bazuar në Debian. Nëse jeni duke përdorur një sistem tjetër operativ, atëherë hyni në lidhjen dhe instaloni sipas sistemit operativ të synuar.
Instaloni gnupg për importimin e çelësit publik GPG të MongoDB.
sudo apt-get install gnupg
Tani importoni çelësin duke përdorur komandën më poshtë.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Krijoni skedarin e listës së burimeve sipas shpërndarjes suaj Linux. Ne kemi shtuar listën e burimeve sipas 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
Ekzekutoni komandën e përditësimit
sudo apt-get update
Tani instaloni MongoDB, duke përdorur komandën e mëposhtme.
sudo apt-get install -y mongodb-org
Pasi instalimi të jetë i suksesshëm, filloni MongoDB duke përdorur komandën e mëposhtme.
sudo systemctl start mongod
Kontrollo statusin e MongoDB, duke përdorur komandënmë poshtë.
sudo systemctl status mongod
Tani sigurohuni që mongod të fillojë automatikisht në rindezjen e sistemit duke lëshuar komandën e paraqitur më poshtë.
sudo systemctl enable mongod
Tani kontrolloni nëse mundeni lidheni me serverin MongoDB duke përdorur klientin mongo.
mongo
Në guaskën mongo, provoni të përdorni ndihmën dhe shfaqni komandat dbs.
Krijo një aplikacion Flask
Përdor komandën e mëposhtme për të instaluar flask-appbuilder dhe mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Krijo një aplikacion skeleti me vlerat e treguara si komente në pjesën e kodit të mëposhtëm.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine.
Ne do të shohim rezultatin të ngjashëm me atë të dhënë më poshtë.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Hidhni një sy paraqitjes së projektit dhe aplikacionit. Ne kemi treguar daljen e komandës së pemës më poshtë.
Le t'i hedhim një sy skedarit të konfigurimit të Flask. Është një konfigurim i paracaktuar i krijuar si rezultat i komandës së fundit. Zhkomentoni temën Cyborg , siç tregohet më poshtë.
# 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
Për të ekzekutuar aplikacionin skeleton, përdorni komandën e dhënë më poshtë në terminal.
flask run
Flask Hello World
Për të krijuar programin tuaj të parë në flaskTutorialApp, hapni skedarin views.py nën drejtorinë e aplikacionit dhe shtoni kodin e mëposhtëm. Kërkoni deklaratat e importit të dhëna në skedar. Shtoni këto deklarata nëse nuk janë tashmë të pranishme.
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())
Ruajeni skedarin pasi të keni shtuar kodin burimor të mësipërm. Shkoni te direktoria kryesore e projektit dhe përdorni komandën e mëposhtme për të ekzekutuar serverin e zhvillimit të Flask.
flask run
Tani lundroni te //localhost:5000/hello/ për të parë daljen nëshfletuesi.
Korrigjimi
Aktualisht, serveri i zhvillimit nuk funksionon në modalitetin e korrigjimit. Pa modalitetin e korrigjimit, është e vështirë të gjesh gabimet në kodin burimor të aplikacionit Flask.
Modaliteti i korrigjimit në Flask rezulton si më poshtë:
- Modaliteti i korrigjimit aktivizon ringarkuesin automatik. Do të thotë që nuk kemi nevojë të rinisim serverin e zhvillimit pasi të bëjmë ndryshime në kodin burimor të aplikacionit.
- Modaliteti i korrigjimit aktivizon korrigjuesin Python. Mund të inspektojmë vlerat e variablave gjatë Përjashtimit.
- Modaliteti i korrigjimit mundëson korrigjimin e aplikacionit në Flask. Ne mund të kontrollojmë vlerat e variablave të ndryshëm në sesionet e korrigjimit.
Ndalo serverin e zhvillimit nëse ai tashmë po funksionon. Ju mund të përdorni CTRL + C ose ndërprerje të tastierës për të bërë të njëjtën gjë.
Përdorni kodin e mëposhtëm për të aktivizuar modalitetin e korrigjimit dhe ekzekutoni serverin e zhvillimit përkohësisht.
FLASK_ENV=development flask run
Kërko konsolën për kodin PIN të korrigjuesit dhe shënojeni atë.
Tani le të ndryshojmë pamjen e shkruar më sipër të HelloWorld me rreshtat e mëposhtëm të copës së kodit. Vini re se kemi prezantuar një përjashtim të personalizuar.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Navigoni te //localhost:5000/hello/ dhe do të shihni që aplikacioni ka bërë një përjashtim. Shfletuesi shfaq gjurmën e stivës, siç tregohet më poshtë.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Për më tepër, shikoni konsolën ku funksionon serveri i zhvillimit. Ju do të gjeni se këtë herë,ndryshimet në views.py zbulohen automatikisht dhe serveri i korrigjimit rifillon vetë. Tani nuk kemi nevojë ta rinisim manualisht.
Konsola do të ketë linja, siç tregohet më poshtë. Duhet të shënojmë PIN-in e korrigjimit për më vonë.
* 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
Tani kontrolloni gjurmën e stivës në shfletues dhe shkoni në rreshtin e fundit. Klikoni mbi të për të zgjeruar pamjen e tij dhe klikoni në ikonën CLI për të hapur guaskën në modalitetin interaktiv.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Pasi ta hapni, do të shihni që shfletuesi do të shfaqë një kërkesë për PIN të korrigjimit. Jepni kodin PIN të korrigjimit dhe klikoni OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Pasi të vazhdojmë përpara pasi të kemi dhënë kodin PIN të korrigjimit, ne mund të hyjmë në guaskën interaktive.
Ne i qasemi guaskës nga brenda shfletuesit dhe mund të inspektojë vlerat e variablave për të gjetur shkakun e Përjashtimit dhe për të trajtuar gabimin në një mënyrë më të mirë. Ju lutemi shikoni një nga shembujt e paraqitur në imazhin më poshtë.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Tani ndryshoni kodin në view.py, siç tregohet më poshtë. Vini re se ne kemi komentuar në linjën që kishte përjashtimin e ngritur.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Testimi i aplikacionit Flask
Tani le të shkruajmë testin tonë të parë për aplikacionin Flask që po zhvillojmë. Së pari, instaloni PyTest. PyTest është një kornizë testimi. Na ndihmon të shkruajmë kod më të mirë.
Për më tepër, vetëm për shkak se mund të shkruajmë teste njësi gjatë zhvillimit të aplikacioneve tona, është e mundur të ndjekim qasjen TDD. TDD qëndron për Test-Driven Development. Në mësimet tona të mëvonshme tënë këtë seri, ne do të shkruajmë gjithmonë testet në fillim dhe do të zhvillojmë pikëpamjet ose modelet tona.
Instaloni PyTest
pip install pytest
Tani krijoni një drejtori të quajtur teste brenda direktorisë së aplikacionit dhe në atë krijoni një skedar të quajtur test_hello.py. Le të shkruajmë testin tonë të parë të njësisë për të testuar pamjen tonë.
Kopjo fragmentin e mëposhtëm të kodit dhe ngjite atë në 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
Përdor komandën e mëposhtme pytest për të ekzekutuar testet. PyTest mbledh automatikisht testet dhe shfaq rezultatet në daljen standarde.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Krijo një rrjedhë pune GitHub
Ne përdorim Git Actions për të krijuar një rrjedhë pune CI/CD për aplikacionin tonë të mostrës. Ndiqni hapat e përmendur më poshtë për projektin tuaj.
Hapi 1: Navigo te faqja e depove në GitHub. Klikoni në Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Hapi 2: Lëvizni poshtë në faqe dhe gjeni një shabllon ekzistues të rrjedhës së punës për një paketë Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Hapi 3: Konfiguro fluksin e punës së paketës Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Hapi 4: Pasi të hapet konfigurimi i rrjedhës së punës python-package.yml, përditësojeni atë bazuar në shtesën e dhënë yaml vlerat e etiketës.
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
Ne duam të testojmë aplikacionin tonë Flask në shpërndarjen më të fundit të Ubuntu Linux. Përveç sistemit operativ, ne duam t'i ekzekutojmë testet tona vetëm duke përdorur Python 3.7 dhe Python 3.8.
Hapi 5: Kryeni python-package.yml me vlerat e përditësuara.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Hapi 6: Komiteti në faqen e mëparshme na çon te GitActionspunë.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Hapi 7: [Opsionale]
Në faqen Github Jobs për aplikacionin e mostrës së mësimit, ne mund të krijojmë një distinktiv dhe një vend atë në skedarin README.md për shfaqjen e statusit të ndërtimit.
Tani, sa herë që ndryshimet kryhen në degën kryesore, Git Workflow, siç shkruhet në python-package.yml do të ndiqet dhe do të ekzekutohet në Git Actions .
Përfundim
Në këtë tutorial, ne kemi mbuluar të gjitha konceptet bazë nga kushtet paraprake deri te konfigurimi i fluksit të punës CI/CD për një aplikacion ueb të zhvilluar duke përdorur Flask – Një kornizë e zhvillimit të uebit të bazuar në Python.
Ky tutorial mbulon të gjithë hapat e nevojshëm si instalimi i Python, shkarkimi & instalimi i Flask, puna me Flask-Appbuilder, testimi me PyTest, etj. për të filluar zhvillimin e uebit duke përdorur Python. Komuniteti i zhvillimit të uebit zakonisht e krahason Flask me një kornizë tjetër të njohur të zhvillimit të uebit Python të quajtur Django.
Ne do t'i shpjegojmë këto dallime dhe gjithashtu do t'i krahasojmë këto korniza në një nga udhëzimet në këtë seri.