Vodič #5: Uzorci dizajna Flaska i najbolje prakse za web aplikacije
Vodič #6: Flask API Vodič s primjerom
Ovaj uvodni vodič za Python Flask objašnjava što je Flask, primjer instalacije Pythona, Virtualenv-a, Flask Hello World s odjeljkom o primjerima koda, otklanjanju pogrešaka i testiranju:
Razvoj web stranice je više umjetnost nego vještina. Zahtijeva strpljenje i marljivost, zajedno s ustrajnošću, hrabrošću i predanošću kako bi se stvorilo ono što je potrebno za pravi uspjeh. Ovih je dana ključno za učenike da što prije postignu brzinu.
Napravili smo ovaj vodič za Python Flask za učenike kako bi se ubrzali i implementirali jednostavno kao i složeno web programiranje pomoću Pythona 3 .
Ovaj vodič za Python Flask više je poput vodiča za početnike u flasku, koji će pokriti instalacija Python, Virtualenv i drugih bitnih paketa. U ovoj seriji tutorijala također ćemo instalirati Flask zajedno s ostalim potrebnim Flask dodacima. Također smo uključili odjeljak o otklanjanju pogrešaka koda, testiranju i kontinuiranoj integraciji pomoću Git radnji.
Popis vodiča u ovoj seriji Flask
Trutorial #1: Python Flask Vodič – Uvod u Flask za početnike
Vodič #2: Predložak Flaska, obrazac, prikaz i preusmjeravanje s primjerima
Vodič #3: Rukovanje bazom podataka Flask – Kako koristiti Flask s bazom podataka
Vodič #4: Flask aplikacija i raspored Flask projekta s nacrtom &navedene korake u preduvjetima.
1. korak: Instalirajte Python
Provjerite jeste li instalirali Python 3 ili ne. Ako ne, tada preuzmite Python 3 odavde i instalirajte ga prema svom operativnom sustavu.
2. korak: Stvorite Python virtualno okruženje
Stvorite virtualno okruženje pomoću donja naredba.
python3 -m venv venv
Koristite donju naredbu za aktiviranje Python virtualnog okruženja.
source venv/bin/activate
U nastavku smo dali primjer aktivacije i deaktivacije virtualnog okruženja.
Sve sljedeće naredbe u ovom vodiču trebale bi se izvoditi u aktiviranom virtualnom okruženju. Instalirajte paket kotača kako bismo mogli graditi kotače unutar virtualnog okruženja.
pip install wheel
Korak 3: Preuzimanje i ugradnja Flaska
Moramo izvršiti korake preuzimanja Flaska i instalirajte Flask pomoću dolje navedenih koraka.
Sada instalirajte Flask.
pip install flask
Neki od nas vole raditi zajedno s najnovijim promjenama izvornog koda. Možemo koristiti dolje danu naredbu za instalaciju s najnovijim promjenama u izvorima Flaska.
Napravite privremeni direktorij.
mkdir tmp
Sada instalirajte Flask iz Github repozitorija. Morate ostati povezani s internetom kako bi donja naredba radila.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Pogledajte izlaze konzole da provjerite uspješnu instalaciju. Sada provjerite možemo li pristupiti Flask naredbama.
flask --help
Možda ćete vidjeti neke iznimke o nedostatku Flaskaprimjena. Međutim, zanemarite ih jer nismo stvorili nijednu aplikaciju Flask. Naša je aplikacija instanca Flaska, koji je omotač Werkzeug web frameworka i Jinja mehanizma za izradu predložaka.
Werkzeug
Werkzeug je WSGI alat. WSGI je samo pozivna konvencija za web poslužitelje za prosljeđivanje web zahtjeva web aplikacijama napisanim u programskom jeziku Python.
Jinja
Templating je osnovni skup vještina web programera. Jinja je potpuno opremljen i popularan mehanizam za izradu predložaka za Python. To je prilično izražajan jezik i pruža robustan skup alata autorima predložaka.
Korak 4: Instalirajte MongoDB
Slijedite dolje navedene korake za instalaciju MongoDB-a. Naveli smo korake za njegovu instalaciju u Linux temeljen na Debianu. Ako koristite drugi operativni sustav, pristupite vezi i instalirajte prema predviđenom operativnom sustavu.
Instalirajte gnupg za uvoz MongoDB javnog GPG ključa.
sudo apt-get install gnupg
Sada uvezite ključ pomoću donje naredbe.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Stvorite datoteku s popisom izvora prema vašoj distribuciji Linuxa. Dodali smo popis izvora prema Debianu.
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
Pokreni naredbu za ažuriranje
sudo apt-get update
Sada instalirajte MongoDB koristeći donju naredbu.
sudo apt-get install -y mongodb-org
Kada je instalacija uspješna, pokrenite MongoDB pomoću donje naredbe.
sudo systemctl start mongod
Provjerite status MongoDB-a pomoću naredbeispod.
sudo systemctl status mongod
Sada osigurajte da se mongod automatski pokreće pri ponovnom pokretanju sustava izdavanjem dolje prikazane naredbe.
sudo systemctl enable mongod
Sada provjerite možete li povežite se s MongoDB poslužiteljem pomoću mongo klijenta.
mongo
U mongo ljusci pokušajte upotrijebiti naredbe za pomoć i prikaz dbs.
Stvorite aplikaciju Flask
Koristite donju naredbu za instaliranje flask-appbuildera i mongoenginea.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Stvorite skeleton aplikaciju s vrijednostima prikazanim kao komentari u donjem isječku koda.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Vidjet ćemo izlaz sličan dolje navedenom.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Pogledajte izgled projekta i aplikacije. Dolje smo prikazali izlaz naredbe stabla.
Pogledajmo konfiguracijsku datoteku Flaska. To je zadana konfiguracija generirana kao rezultat posljednje naredbe. Uklonite komentar s teme Cyborg , kao što je prikazano u nastavku.
# 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
Za pokretanje aplikacije skeleton, upotrijebite donju naredbu na terminalu.
flask run
Flask Hello World
Da biste izradili svoj prvi program u aplikaciji flaskTutorialApp, otvorite datoteku views.py u direktoriju aplikacije i dodajte sljedeći kod. Potražite izjave o uvozu dane u datoteci. Dodajte ove izjave ako već nisu prisutne.
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())
Spremite datoteku nakon dodavanja gornjeg izvornog koda. Idite u korijenski direktorij projekta i upotrijebite donju naredbu za pokretanje Flaskovog razvojnog poslužitelja.
flask run
Sada idite na //localhost:5000/hello/ da biste vidjeli izlaz upreglednik.
Otklanjanje pogrešaka
Trenutno razvojni poslužitelj ne radi u načinu rada za uklanjanje pogrešaka. Bez načina otklanjanja pogrešaka, teško je pronaći pogreške u izvornom kodu aplikacije Flask.
Način otklanjanja pogrešaka u Flasku rezultira sljedećim:
- Način otklanjanja pogrešaka aktivira Automatski reloader. To znači da ne moramo ponovno pokretati razvojni poslužitelj nakon što izvršimo promjene u izvornom kodu aplikacije.
- Debug način rada aktivira Python debugger. Možemo provjeriti vrijednosti varijabli tijekom iznimke.
- Način otklanjanja pogrešaka omogućuje uklanjanje pogrešaka Flask aplikacije. Možemo provjeriti vrijednosti raznih varijabli u sesijama otklanjanja pogrešaka.
Zaustavite razvojni poslužitelj ako je već pokrenut. Možete koristiti CTRL + C ili prekid tipkovnice da učinite isto.
Koristite sljedeći kod da omogućite način otklanjanja pogrešaka i privremeno pokrenete razvojni poslužitelj.
FLASK_ENV=development flask run
Traži konzolu za PIN Debuggera i zabilježite ga.
Promijenimo sada gore napisani HelloWorld pogled sa sljedećim redcima isječka koda. Primijetite da smo uveli prilagođenu iznimku.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Idite na //localhost:5000/hello/ i vidjet ćete da je aplikacija pokrenula iznimku. Preglednik prikazuje praćenje stoga, kao što je prikazano u nastavku.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Nadalje, pogledajte konzolu na kojoj se izvodi razvojni poslužitelj. Otkrit ćete da ovaj put,promjene u views.py automatski se otkrivaju, a poslužitelj za ispravljanje pogrešaka se sam ponovno pokreće. Sada je ne moramo ručno ponovno pokretati.
Konzola će imati linije, kao što je prikazano u nastavku. Moramo zabilježiti Debug PIN za kasnije.
* 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
Sada provjerite praćenje stoga u pregledniku i idite na zadnji redak. Kliknite na njega da biste proširili njegov prikaz i kliknite na ikonu CLI da biste otvorili ljusku u interaktivnom načinu rada.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Nakon što ga otvorite, vidjet ćete da će preglednik prikazati upit za PIN za otklanjanje pogrešaka. Dajte Debug PIN i kliknite na OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Kada nastavimo dalje nakon davanja Debug PIN-a, možemo pristupiti interaktivnoj ljusci.
Ljusci pristupamo iz preglednika i može pregledati vrijednosti varijabli kako bi pronašao uzrok iznimke i riješio pogrešku na bolji način. Molimo pogledajte jedan od primjera prikazanih na slici ispod.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Sada promijenite kod u view.py, kao što je prikazano u nastavku. Imajte na umu da smo komentirali redak koji je imao pokrenutu iznimku.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Testiranje Flask aplikacije
Napišimo sada naš prvi test za Flask aplikaciju koju razvijamo. Prvo instalirajte PyTest. PyTest je okvir za testiranje. Pomaže nam da napišemo bolji kod.
Štoviše, samo zato što možemo pisati jedinične testove dok razvijamo svoje aplikacije, moguće je slijediti TDD pristup. TDD je kratica za Test-Driven Development. U našim narednim tutorijalima zau ovoj seriji, uvijek ćemo prvo pisati testove i razvijati naše poglede ili modele.
Instalirajte PyTest
pip install pytest
Sada stvorite direktorij pod nazivom testovi unutar direktorija aplikacije i u tom kreirajte datoteku pod nazivom test_hello.py. Napišimo naš prvi jedinični test da testiramo naš pogled.
Kopirajte sljedeći isječak koda i zalijepite ga u 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
Upotrijebite donju naredbu pytest za pokretanje testovi. PyTest automatski prikuplja testove i prikazuje rezultate na standardnom izlazu.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Stvorite GitHub tijek rada
Koristimo Git Actions za stvaranje CI/CD tijeka rada za našu oglednu aplikaciju. Slijedite dolje navedene korake za svoj projekt.
Korak 1: Idite na stranicu repozitorija na GitHubu. Kliknite na Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
2. korak: Pomaknite se prema dolje na stranici i pronađite postojeći predložak tijeka rada za Python paket.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Korak 3: Postavite Tijek rada Python paketa.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Korak 4: Nakon što se otvori konfiguracija tijeka rada python-package.yml, ažurirajte ga na temelju danog yaml dodatnog vrijednosti oznaka.
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
Želimo testirati našu aplikaciju Flask na najnovijoj distribuciji Ubuntu Linuxa. Osim OS-a, želimo izvoditi naše testove samo koristeći Python 3.7 i Python 3.8.
Korak 5: Postavite python-package.yml s ažuriranim vrijednostima.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Korak 6: Obaveza na prethodnoj stranici vodi nas do GitActionsposlove.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Korak 7: [Izborno]
Na stranici Github Poslovi za primjer aplikacije s podukama možemo izraditi značku i mjesto to u datoteci README.md za prikaz statusa izgradnje.
Sada, kad god se promjene predaju glavnoj grani, Git Workflow, kako je napisano u python-package.yml, pratit će se i izvoditi na Git radnjama .
Zaključak
U ovom vodiču pokrili smo sve osnovne koncepte od preduvjeta do postavljanja CI/CD tijeka rada za web aplikaciju razvijenu pomoću Flaska – okvira za web razvoj temeljenog na Pythonu.
Ovaj vodič pokriva sve potrebne korake kao što su instaliranje Pythona, preuzimanje & instaliranje Flaska, rad s Flask-Appbuilderom, testiranje s PyTestom itd. kako biste započeli s web razvojem pomoću Pythona. Zajednica web-programera obično uspoređuje Flask s drugim popularnim Python okvirom za web razvoj koji se zove Django.
Objasnit ćemo te razlike i također ćemo usporediti ove okvire u jednom od vodiča u ovoj seriji.