Tutorijal #5: Uzorci dizajna flaska i najbolje prakse za web aplikacije
Vodič #6: Flask API vodič sa primjerom
Ovaj uvodni vodič za Python Flask objašnjava šta je Flask, primjer instalacije Python, Virtualenv, Flask Hello World sa odjeljkom o primjerima koda, otklanjanju grešaka i testiranju:
Razvoj web stranice je više umjetnost nego vještina. Zahtijeva strpljenje i marljivost, zajedno s istrajnošću, hrabrošću i posvećenošću da se stvori ono što je neophodno da bi bio pravi uspjeh. Ovih dana je od suštinskog značaja za učenike da dođu do brzine što je prije moguće.
Napravili smo ovaj vodič za Python Flask za učenike da nauče brzinu i implementiraju jednostavno i složeno web programiranje koristeći Python 3 .
Ovaj vodič za Python Flask je više kao vodič za početnike za flask, 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 grešaka, testiranju i kontinuiranoj integraciji koda pomoću Git Actions.
Lista tutorijala u ovoj seriji Flask
Vodič #1: Python Flask Vodič – Uvod u Flask za početnike
Vodič #2: Flask predložak, obrazac, prikaz i preusmjeravanje s primjerima
Vodič #3: Rukovanje Flask bazom podataka – Kako koristiti Flask s bazom podataka
Vodič #4: Flask aplikacija i raspored projekta Flask sa nacrtom &navedene korake u preduvjetima.
Korak 1: Instalirajte Python
Provjerite da li ste instalirali Python 3 ili ne. Ako ne, preuzmite Python 3 ovdje i instalirajte ga prema svom operativnom sistemu.
Korak 2: Kreirajte Python virtualno okruženje
Kreirajte virtualno okruženje koristeći naredba ispod.
python3 -m venv venv
Koristite donju naredbu da aktivirate Python virtualno okruženje.
source venv/bin/activate
U nastavku smo dali primjer aktivacije i deaktivacije virtualnog okruženja.
Sve sljedeće komande u ovom vodiču trebale bi se izvoditi u aktiviranom virtuelnom okruženju. Instalirajte paket kotača tako da možemo napraviti kotače unutar virtuelnog okruženja.
pip install wheel
Korak 3: preuzimanje i instaliranje Flask
Moramo izvršiti korake preuzimanja Flask-a i instalirajte Flask koristeći dolje navedene korake.
Sada instalirajte Flask.
pip install flask
Neki od nas vole raditi zajedno s najnovijim promjenama izvornog koda. Možemo koristiti dolje datu naredbu za instalaciju s najnovijim promjenama izvora Flask-a.
Napravite privremeni direktorij.
mkdir tmp
Sada instalirajte Flask iz Github spremišta. Morate ostati povezani na internet da bi naredba ispod 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 komandama.
flask --help
Možda ćete vidjeti neke izuzetke u vezi odsustva Flask-aaplikacija. Međutim, zanemarite ih jer nismo kreirali nijednu aplikaciju Flask. Naša aplikacija je instanca Flaska, koji je omotač na Werkzeug web frameworku i Jinja šablonskom mehanizmu.
Werkzeug
Werkzeug je WSGI alat. WSGI je samo pozivna konvencija za web servere da prosljeđuju web zahtjeve web aplikacijama napisanim u programskom jeziku Python.
Jinja
Templating je osnovni skup vještina web programera. Jinja je potpuno opremljen i popularan mehanizam za šabloniranje za Python. To je prilično izražajan jezik i pruža robustan skup alata za autore šablona.
Korak 4: Instalirajte MongoDB
Slijedite dolje navedene korake da biste instalirali MongoDB. Naveli smo korake za njegovu instalaciju u Linux baziran na Debianu. Ako koristite drugi operativni sistem, pristupite linku i instalirajte prema predviđenom operativnom sistemu.
Instalirajte gnupg za uvoz MongoDB javnog GPG ključa.
sudo apt-get install gnupg
Sada uvezite ključ koristeći naredbu ispod.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Kreirajte datoteku liste izvora prema vašoj Linux distribuciji. 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 ažuriranja
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 koristeći donju naredbu.
sudo systemctl start mongod
Provjerite status MongoDB koristeći naredbuispod.
sudo systemctl status mongod
Sada osigurajte da se mongod automatski pokreće pri ponovnom pokretanju sistema izdavanjem naredbe prikazane ispod.
sudo systemctl enable mongod
Sada provjerite da li možete povežite se na MongoDB server koristeći mongo klijent.
mongo
U mongo ljusci pokušajte koristiti pomoć i prikaži dbs komande.
Kreirajte Flask aplikaciju
Koristite naredbu ispod da instalirate flask-appbuilder i mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Kreirajte skelet aplikaciju sa 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 onome koji je dat u nastavku.
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. Ispod smo prikazali izlaz komande stabla.
Hajde da pogledamo Flask konfiguracioni fajl. To je zadana konfiguracija generirana kao rezultat posljednje naredbe. Dekomentirajte temu Kiborg , kao što je prikazano ispod.
# 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
Da pokrenete skeleton aplikaciju, koristite donju datu komandu na terminalu.
flask run
Flask Hello World
Da biste kreirali svoj prvi program u flaskTutorialApp, otvorite datoteku views.py u direktoriju aplikacije i dodajte sljedeći kod. Potražite izjave o uvozu date 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())
Sačuvajte datoteku nakon što dodate gornji izvorni kod. Idite na korijenski direktorij projekta i koristite donju naredbu da pokrenete Flask razvojni server.
flask run
Sada idite na //localhost:5000/hello/ da vidite izlaz upretraživač.
Otklanjanje grešaka
Trenutno, razvojni server ne radi u načinu za otklanjanje grešaka. Bez načina za otklanjanje grešaka, teško je pronaći greške u izvornom kodu Flask aplikacije.
Režim za otklanjanje grešaka u Flask-u rezultira sljedećim:
- Režim za otklanjanje grešaka aktivira automatski reloader. To znači da ne moramo ponovo pokrenuti razvojni server nakon što izvršimo promjene u izvornom kodu aplikacije.
- Režim za otklanjanje grešaka aktivira Python debugger. Možemo provjeriti vrijednosti varijabli tokom Izuzeća.
- Režim za otklanjanje grešaka omogućava otklanjanje grešaka u Flask aplikaciji. Možemo provjeriti vrijednosti različitih varijabli u sesijama otklanjanja grešaka.
Zaustavite razvojni server 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 grešaka i privremeno pokrenite razvojni server.
FLASK_ENV=development flask run
Traži konzolu za PIN za ispravljanje pogrešaka i zabilježite ga.
Sada promijenimo gore napisani HelloWorld prikaz sa sljedećim redovima isječka koda. Obratite pažnju da smo uveli prilagođeni izuzetak.
@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 izuzetak. Pretraživač prikazuje praćenje steka, kao što je prikazano ispod.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Dalje, pogledajte konzolu na kojoj radi razvojni server. Naći ćete da ovaj put,promene u view.py se automatski otkrivaju, a server za otklanjanje grešaka se sam ponovo pokreće. Sada je ne moramo ručno ponovo pokrenuti.
Konzola će imati linije, kao što je prikazano ispod. Moramo zabilježiti PIN za otklanjanje grešaka 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 steka u pretraživaču i idite na zadnji red. Kliknite na njega da proširite njegov prikaz i kliknite na ikonu CLI da otvorite ljusku u interaktivnom načinu rada.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Kada je otvorite, vidjet ćete da će pretraživač prikazati upit za PIN za otklanjanje grešaka. Dajte PIN za otklanjanje grešaka i kliknite na OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Kada nastavimo dalje nakon davanja PIN-a za otklanjanje grešaka, možemo pristupiti interaktivnoj ljusci.
Pristupamo ljusci iz pretraživača i može pregledati vrijednosti varijabli kako bi pronašao uzrok iznimke i riješio greš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 ispod. Imajte na umu da smo komentirali liniju koja je imala podignutu iznimku.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Testiranje Flask aplikacije
Sada napišimo naš prvi test za Flask aplikaciju koju razvijamo. Prvo instalirajte PyTest. PyTest je okvir za testiranje. Pomaže nam da napišemo bolji kod.
Štaviše, samo zato što možemo pisati jedinične testove dok razvijamo naše aplikacije, moguće je pratiti TDD pristup. TDD je skraćenica od Test-Driven Development. U našim narednim tutorijalima oU ovoj seriji, uvijek ćemo prvo pisati testove i razvijati naše poglede ili modele.
Instalirajte PyTest
pip install pytest
Sada kreirajte direktorij pod nazivom testovi unutar direktorija aplikacije iu 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
Koristite donju naredbu pytest za pokretanje testovi. PyTest automatski prikuplja testove i prikazuje rezultate na standardnom izlazu.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Kreirajte GitHub radni tok
Koristimo Git Actions da kreiramo CI/CD radni tok za naš primjer aplikacije. Pratite dole navedene korake za svoj projekat.
Korak 1: Idite na stranicu spremišta na GitHub-u. Kliknite na Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Korak 2: Pomaknite se prema dolje na stranici i pronađite postojeći predložak toka posla za Python paket.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Korak 3: Postavite tok rada Python paketa.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Korak 4: Jednom kada se otvori konfiguracija toka posla python-package.yml, ažurirajte je na osnovu datih dodatnih yaml 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 Flask aplikaciju na najnovijoj Ubuntu Linux distribuciji. Pored OS-a, želimo da pokrenemo naše testove samo koristeći Python 3.7 i Python 3.8.
Korak 5: Urežite python-package.yml sa ažuriranim vrijednostima.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Korak 6: Urezivanje na prethodnoj stranici vodi nas do GitActions-aposlovi.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Korak 7: [Opcionalno]
Na stranici Github Jobs za primjer aplikacije za tutorial, možemo kreirati značku i mjesto to u README.md datoteci za prikaz statusa izrade.
Sada, kad god se promjene predaju na glavnu granu, Git Workflow, kako je napisano u python-package.yml će biti praćen i pokrenut na Git Actions .
Zaključak
U ovom tutorijalu pokrili smo sve osnovne koncepte od preduvjeta do postavljanja CI/CD toka rada za web aplikaciju razvijenu koristeći Flask – okvir za web razvoj zasnovan na Pythonu.
Ovaj vodič pokriva sve potrebne korake kao što su instaliranje Python-a, preuzimanje & instaliranje Flask-a, rad sa Flask-Appbuilder-om, testiranje sa PyTest-om, itd. da biste započeli sa razvojem weba koristeći Python. Zajednica za razvoj weba obično uspoređuje Flask s drugim popularnim Python okvirom za web razvoj koji se zove Django.
Objasnit ćemo ove razlike i usporediti te okvire u jednom od tutorijala u ovoj seriji.