Tento úvodní kurz jazyka Python Flask vysvětluje, co je to Flask, instalaci jazyka Python, Virtualenv, příklad Flask Hello World s částí o příkladech kódu, ladění a testování:
Tvorba webových stránek je spíše uměním než dovedností. Vyžaduje trpělivost a píli, spolu s vytrvalostí, odvahou a odhodláním vytvořit to, co je nezbytné k tomu, aby byla skutečně úspěšná. V dnešní době je pro studenty nezbytné, aby se co nejdříve dostali do tempa.
Vytvořili jsme tento výukový program pro Python Flask, který studentům umožní zrychlit a implementovat jednoduché i složité webové programování pomocí Pythonu 3.
Tento výukový kurz Pythonu Flask je spíše výukovým kurzem pro začátečníky, který se bude zabývat instalací Pythonu, Virtualenv a dalších základních balíčků. V této sérii výukových kurzů také nainstalujeme Flask spolu s dalšími potřebnými pluginy Flasku. Zařadili jsme také část o ladění kódu, testování a kontinuální integraci pomocí Git Actions.
Seznam výukových programů v této sérii Flask
Výukový program č. 1: Python Flask Tutorial - Úvod do Flask pro začátečníky
Výukový kurz č. 2: Šablona, formulář, zobrazení a přesměrování Flask s příklady
Výukový kurz č. 3: Manipulace s databází Flask - Jak používat Flask s databází
Výukový kurz č. 4: Rozvržení aplikace Flask a projektu Flask pomocí Blueprint &; Bootstrap
Výukový kurz č. 5: Návrhové vzory a osvědčené postupy pro webové aplikace Flask
Výukový kurz č. 6: Výukový program Flask API s příkladem
Výukový kurz č. 7: Django vs Flask vs Node: Který framework vybrat
Výukový kurz č. 8: Top 31 Populární otázky k rozhovoru pro Python Flask s odpověďmi
Co je to Flask
Flask je framework pro vývoj webových aplikací. Jedná se o framework s integrovaným vývojovým serverem a ladicím programem.
Framework Flask se sám o sobě liší od ostatních archetypů, protože umožňuje vývojářům webových aplikací být flexibilní a pohodlně se přizpůsobovat často vydávaným změnám v komunitě vývojářů softwaru.
K čemu se používá baňka
Pro vývoj webových aplikací v programovacím jazyce Python používáme framework Flask. Integruje se s dalšími službami a rozhraními API třetích stran, čímž dodává vyvíjené aplikaci bohatost a smysl. Základní koncepty frameworku Flask jsou jednoduché a má malé rozměry.
Začněme s tímto výukovým programem Python Flask, abychom pochopili vývoj webových aplikací s pomocí úložiště Flask na GitHubu. Než však budete pokračovat, naklonujte si projekt z Githubu, abyste mohli snadno navázat na probírané příklady kódu.
Předpoklady
Kromě zmíněných nadpisů v této části doporučujeme vytvořit účet Github. Pokračujme níže uvedenými kroky v předpokladech.
Krok 1: Instalace Pythonu
Zkontrolujte, zda máte nainstalovaný Python 3. Pokud ne, stáhněte si Python 3 odtud a nainstalujte jej podle svého operačního systému.
Krok 2: Vytvoření virtuálního prostředí Pythonu
Vytvořte virtuální prostředí pomocí níže uvedeného příkazu.
python3 -m venv venv
Pomocí níže uvedeného příkazu aktivujte virtuální prostředí Python.
source venv/bin/activate
Níže uvádíme příklad aktivace a deaktivace virtuálního prostředí.
Všechny následující příkazy v tomto návodu by měly být spuštěny v aktivovaném virtuálním prostředí. Nainstalujte balíček wheel, abychom mohli sestavovat kola uvnitř virtuálního prostředí.
pip install wheel
Krok 3: Stažení a vložení Flask
Musíme provést kroky ke stažení aplikace Flask a nainstalovat ji pomocí níže uvedených kroků.
Nyní nainstalujte Flask.
pip install flask
Někteří z nás rádi pracují s nejnovějšími změnami zdrojového kódu. Pro instalaci s nejnovějšími změnami zdrojových kódů Flasku můžeme použít níže uvedený příkaz.
Vytvořte dočasný adresář.
mkdir tmp
Nyní nainstalujte Flask z repozitáře Github. Aby níže uvedený příkaz fungoval, musíte zůstat připojeni k internetu.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Podívejte se na výstupy konzoly a zkontrolujte úspěšnou instalaci. Nyní zkontrolujte, zda máme přístup k příkazům Flask.
flask --help
Možná uvidíte několik výjimek ohledně absence aplikace Flask. Těch si však nevšímejte, protože jsme žádnou aplikaci Flask nevytvořili. Naše aplikace je instancí Flasku, což je obal na webový framework Werkzeug a šablonovací engine Jinja.
Werkzeug
Werkzeug je sada nástrojů WSGI. WSGI je pouze volací konvence pro webové servery k předávání webové požadavky k webovým aplikacím napsaným v programovacím jazyce Python.
Jinja
Šablonování je základní dovedností webových vývojářů. Jinja je plně vybavený a oblíbený šablonovací engine pro Python. Je to poměrně expresivní jazyk a poskytuje autorům šablon robustní sadu nástrojů.
Krok 4: Instalace MongoDB
Pro instalaci MongoDB postupujte podle níže uvedených kroků. Uvedli jsme kroky pro instalaci v systému Linux založeném na Debianu. Pokud používáte jiný operační systém, přejděte na tento odkaz a nainstalujte jej podle zamýšleného operačního systému.
Nainstalujte gnupg pro import veřejného klíče GPG MongoDB.
sudo apt-get install gnupg
Nyní importujte klíč pomocí níže uvedeného příkazu.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Vytvořte soubor se seznamem zdrojů podle vaší distribuce Linuxu. My jsme přidali seznam zdrojů podle Debianu.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Spusťte příkaz update
sudo apt-get update
Nyní nainstalujte MongoDB pomocí níže uvedeného příkazu.
sudo apt-get install -y mongodb-org
Po úspěšné instalaci spusťte MongoDB pomocí níže uvedeného příkazu.
sudo systemctl start mongod
Zkontrolujte stav MongoDB pomocí níže uvedeného příkazu.
sudo systemctl status mongod
Nyní zajistěte automatické spuštění programu mongod při restartu systému zadáním níže uvedeného příkazu.
sudo systemctl enable mongod
Nyní zkontrolujte, zda se můžete připojit k serveru MongoDB pomocí klienta mongo.
mongo
V příkazovém řádku mongo zkuste použít příkazy help a show dbs.
Vytvoření aplikace Flask
Pomocí níže uvedeného příkazu nainstalujte flask-appbuilder a mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Vytvořte kostru aplikace s hodnotami uvedenými jako komentáře v níže uvedeném úryvku kódu.
flask fab create-app # V dotazníku příkazového řádku zadejte následující hodnoty # Název aplikace: flaskTutorialApp # EngineType : MongoEngine
Zobrazí se nám výstup podobný tomu, který je uveden níže.
Název vaší nové aplikace: exampleApp Typ vašeho enginu, SQLAlchemy nebo MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Stažena kostra aplikace, dobré kódování!
Podívejte se na rozložení projektu a aplikace. Níže jsme uvedli výstup příkazu strom.
Podívejme se na konfigurační soubor Flasku. Jedná se o výchozí konfiguraci vygenerovanou jako výsledek posledního příkazu. Odkomentujte příkaz Kyborg jak je znázorněno níže.
# Konfigurace témat pro Cybord=g # tato témata jsou umístěna v adresáři static/appbuilder/css/themes # Můžeme si vytvořit vlastní a snadno je používat tak, že je umístíme do stejné struktury adresářů, které přepíšeme #APP_THEME = "bootstrap-theme.css" # výchozí bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # téma amelia #APP_THEME = "cosmo.css" # téma cosmo APP_THEME = "cyborg.css" # cyborgtéma #APP_THEME = "flatly.css" # flatly téma
Chcete-li spustit kostru aplikace, použijte v terminálu níže uvedený příkaz.
spuštění baňky
Flask Hello World
Chcete-li vytvořit svůj první program v aplikaci flaskTutorialApp, otevřete soubor views.py v adresáři aplikace a přidejte následující kód. Vyhledejte příkazy import uvedené v souboru. Pokud ještě nejsou přítomny, přidejte je.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Toto první zobrazení výukového programu """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # na konci souboru appbuilder.add_view_no_menu(HelloWorld())
Po přidání výše uvedeného zdrojového kódu soubor uložte. Přejděte do kořenového adresáře projektu a pomocí níže uvedeného příkazu spusťte vývojový server Flask.
spuštění baňky
Nyní přejděte na adresu //localhost:5000/hello/ a zobrazte výstup v prohlížeči.
Ladění
V současné době není vývojový server spuštěn v režimu ladění. Bez režimu ladění je obtížné najít chyby ve zdrojovém kódu aplikace Flask.
Režim ladění ve Flasku vede k následujícím výsledkům:
- Režim ladění aktivuje funkci Automatické načítání. To znamená, že nemusíme restartovat vývojový server poté, co provedeme změny ve zdrojovém kódu aplikace.
- Režim ladění aktivuje ladicí program jazyka Python. Můžeme kontrolovat hodnoty proměnných během příkazu Exception.
- Režim ladění umožňuje ladění aplikace Flask. V relacích ladění můžeme kontrolovat hodnoty různých proměnných.
Pokud je vývojový server již spuštěn, zastavte jej. Můžete použít kombinaci kláves CTRL + C nebo přerušení klávesnice.
Následujícím kódem povolíte režim ladění a dočasně spustíte vývojový server.
FLASK_ENV=development flask run
Vyhledejte v konzole kód PIN debuggeru a poznamenejte si ho.
Nyní změňme výše napsaný pohled HelloWorld následujícími řádky úryvku kódu. Všimněte si, že jsme zavedli vlastní výjimku.
@expose("/") def hello(self): raise Exception("Vlastní výjimka pro naučení režimu DEBUG") return "Hello, World! from Software Testing Help"
Přejděte na adresu //localhost:5000/hello/ a uvidíte, že aplikace vyvolala výjimku. Prohlížeč zobrazí stopu zásobníku, jak je uvedeno níže.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Dále se podívejte do konzoly, kde běží vývojový server. Zjistíte, že tentokrát jsou změny v souboru views.py detekovány automaticky a ladicí server se sám restartuje. Nyní jej nemusíme restartovat ručně.
V konzole se zobrazí řádky, jak je znázorněno níže. Musíme si poznamenat kód PIN pro ladění pro pozdější použití.
* Detekována změna v '/work/sth/flaskTutorialApp/app/views.py', znovu načteno 2020-06-02 14:59:49,354:INFO:werkzeug: * Detekována změna v '/work/sth/flaskTutorialApp/app/views.py', znovu načteno * Restartováno pomocí stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restartováno pomocí stat * Debugger je aktivní! * Debugger PIN: 150-849-897
Nyní zkontrolujte stopu zásobníku v prohlížeči a přejděte na poslední řádek. Kliknutím na něj rozbalte jeho zobrazení a kliknutím na ikonu CLI otevřete shell v interaktivním režimu.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Po otevření se v prohlížeči zobrazí výzva k zadání kódu PIN pro ladění. Zadejte kód PIN pro ladění a klikněte na tlačítko OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Jakmile po zadání kódu PIN Debug pokračujeme, můžeme přistupovat k interaktivnímu shellu.
Z prohlížeče přistupujeme k shellu a můžeme kontrolovat hodnoty proměnných, abychom zjistili příčinu výjimky a chybu lépe ošetřili. Podívejte se na jeden z příkladů na obrázku níže.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Nyní změňte kód v souboru view.py, jak je znázorněno níže. Všimněte si, že jsme zakomentovali řádek, na kterém byla vyvolána výjimka.
@expose("/") def hello(self): # raise Exception("Vlastní výjimka pro naučení režimu DEBUG") return "Hello, World! from Software Testing Help"
Testování aplikace Flask
Nyní napíšeme první test pro aplikaci Flask, kterou vyvíjíme. Nejprve nainstalujeme PyTest. PyTest je testovací framework, který nám pomůže napsat lepší kód.
Navíc právě proto, že můžeme při vývoji našich aplikací psát unit testy, je možné dodržovat přístup TDD. TDD je zkratka pro Test-Driven Development, tedy vývoj řízený testy. V dalších tutoriálech tohoto seriálu budeme vždy nejprve psát testy a teprve poté vyvíjet naše pohledy nebo modely.
Nainstalujte PyTest
pip install pytest
Nyní vytvořte adresář tests uvnitř adresáře app a v něm soubor test_hello.py. Napíšeme první unit test, který otestuje náš pohled.
Zkopírujte následující úryvek kódu a vložte jej do souboru 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
Pro spuštění testů použijte níže uvedený příkaz pytest. PyTest automaticky shromažďuje testy a zobrazuje výsledky na standardním výstupu.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Vytvoření pracovního postupu GitHub
K vytvoření pracovního postupu CI/CD pro naši ukázkovou aplikaci použijeme aplikaci Git Actions. Pro svůj projekt postupujte podle níže uvedených kroků.
Krok 1: Přejděte na stránku úložiště na serveru GitHub. Klikněte na položku Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Krok 2: Přejděte na stránce dolů a najděte existující šablonu pracovního postupu pro balíček Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Krok 3: Nastavení balíčku Python Workflow.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Krok 4: Jakmile se otevře konfigurace pracovního postupu python-package.yml, aktualizujte ji na základě zadaných hodnot doplňkových značek 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
Naši aplikaci Flask chceme otestovat na nejnovější distribuci Ubuntu Linux. Kromě operačního systému chceme naše testy provádět pouze s použitím Pythonu 3.7 a Pythonu 3.8.
Krok 5: Odevzdejte soubor python-package.yml s aktualizovanými hodnotami.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Krok 6: Odevzdání na předchozí stránce nás přenese do úloh GitActions.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Krok 7: [Volitelné]
Na stránce Github Jobs pro ukázkovou výukovou aplikaci můžeme vytvořit odznak a umístit jej do souboru README.md pro zobrazení stavu sestavení.
Nyní, kdykoli jsou změny odevzdány do hlavní větve, bude následovat pracovní postup Git, jak je napsán v souboru python-package.yml, a bude spuštěn v rámci akcí Git.
Závěr
V tomto tutoriálu jsme se zabývali všemi základními koncepty od předpokladů až po nastavení pracovního postupu CI/CD pro webovou aplikaci vyvinutou pomocí Flask - rámce pro vývoj webových aplikací založeného na Pythonu.
Tento návod zahrnuje všechny nezbytné kroky, jako je instalace Pythonu, stažení &u instalace Flasku, práce s Flask-Appbuilder, testování pomocí PyTestu atd., abyste mohli začít s vývojem webových aplikací pomocí Pythonu. Komunita webových vývojářů obvykle srovnává Flask s dalším populárním frameworkem pro vývoj webových aplikací v Pythonu zvaným Django.
Tyto rozdíly vysvětlíme a porovnáme v jednom z tutoriálů této série.