5. tutoriala: Flask diseinu-ereduak eta web-aplikazioetarako praktika onak
6. tutoriala: Flask APIaren tutoriala adibidearekin
Python Flask-en sarrerako tutorial honek Flask zer den azaltzen du, Python, Virtualenv, Flask Hello World adibidea kode-adibideei, arazketari eta probei buruzko atal batekin:
Webgunearen garapena da. trebetasun bat baino arte gehiago. Pazientzia eta ardura behar dira, irmotasun, ausardia eta dedikazioarekin batera, benetako arrakasta izateko beharrezkoa dena sortzeko. Egun, ezinbestekoa da ikasleak ahalik eta azkarren azkartzea.
Python Flask-en tutorial hau sortu dugu ikasleek abiadura bizi dezaten eta web programazio sinple eta konplexua ezartzeko Python 3 erabiliz. .
Python Flask-en tutorial hau Flask-en hasiberrientzako tutorial baten antzekoa da, eta honek Python, Virtualenv eta funtsezko beste pakete batzuen instalazioa. Tutorial sorta honetan, Flask beharrezkoak diren beste pluginekin batera instalatuko dugu. Git Actions erabiliz kodea arazketa, proba eta etengabeko integrazioari buruzko atal bat ere sartu dugu.
Flask serie honetako tutorialen zerrenda
Tutorial #1: Python Flask Tutoriala – Hasiberrientzako Flask-en hastapena
2. tutoriala: Flask txantiloia, inprimakia, ikusi eta birbideratzea Adibideekin
Tutorial #3: Flask Datu-basearen kudeaketa - Nola erabili Flask datu-base batekin
Tutorial #4: Flask aplikazioa eta Flask proiektuaren diseinua Blueprint &aurrebaldintzetan aipatutako urratsak.
1. urratsa: instalatu Python
Egiaztatu Python 3 instalatu duzun ala ez. Hala ez bada, deskargatu Python 3 hementik eta instalatu zure sistema eragilearen arabera.
2. urratsa: Python ingurune birtuala sortu
Sortu ingurune birtual bat erabiliz. azpiko komandoa.
python3 -m venv venv
Erabili beheko komandoa Python ingurune birtuala aktibatzeko.
source venv/bin/activate
Behean ingurune birtuala aktibatzeko eta desaktibatzeko adibide bat eman dugu.
Tutorial honetako ondorengo komando guztiak ingurune birtual aktibatu batean exekutatu beharko lirateke. Instalatu gurpil-paketea ingurune birtualean gurpilak eraiki ditzagun.
pip install wheel
3. urratsa: Flask deskargatu eta instalatu
Flask deskargatzeko urratsak egin behar ditugu eta instalatu Flask behean aipatutako urratsak erabiliz.
Orain instalatu Flask.
pip install flask
Gutako batzuei iturburu-kodearen azken aldaketekin batera lan egitea gustatzen zaigu. Behean emandako komandoa erabil dezakegu Flask-en iturburuetan egindako azken aldaketekin instalatzeko.
Egin aldi baterako direktorio bat.
mkdir tmp
Orain instalatu Flask Github biltegitik. Beheko komandoak funtziona dezan Internetera konektatuta egon behar duzu.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Begiratu kontsolaren irteerak instalazio arrakastatsua izan den egiaztatzeko. Egiaztatu orain Flask-eko komandoetara sar gaitezkeen.
flask --help
Flask bat ez egoteari buruzko salbuespen batzuk ikusiko dituzu.aplikazio. Hala ere, ahaztu horiek ez baitugu Flask aplikaziorik sortu. Gure aplikazioa Flask-en instantzia bat da, hau da, Werkzeug web-esparruko eta Jinja txantiloi-motorreko bilgarri bat.
Werkzeug
Werkzeug WSGI tresna-kit bat da. WSGI dei-konbentzio bat baino ez da web-zerbitzarientzat web-eskaerak birbidaltzeko Python programazio-lengoaian idatzitako web aplikazioetara.
Jinja
Tantiloiak egitea da web garatzaileen funtsezko trebetasun multzoa. Jinja Python-en txantiloi-motor oso ezaguna eta ezaguna da. Nahiko hizkuntza adierazgarria da eta tresna multzo sendoa eskaintzen die txantiloien egileei.
4. urratsa: instalatu MongoDB
Jarraitu azpian aipatutako urratsei MongoDB instalatzeko. Debian oinarritutako Linux batean instalatzeko urratsak zehaztu ditugu. Beste sistema eragile bat erabiltzen ari bazara, sartu estekan eta instalatu nahi den sistema eragilearen arabera.
Instalatu gnupg MongoDB GPG gako publikoa inportatzeko.
sudo apt-get install gnupg
Orain inportatu gakoa beheko komandoa erabiliz.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Sortu iturrien zerrendako fitxategia zure Linux banaketaren arabera. Iturburuen zerrenda gehitu dugu Debian-en arabera.
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
Exekutatu eguneratze komandoa
sudo apt-get update
Orain instalatu MongoDB, beheko komandoa erabiliz.
sudo apt-get install -y mongodb-org
Instalazioa arrakastatsua izan denean, abiarazi MongoDB beheko komandoa erabiliz.
sudo systemctl start mongod
Egiaztatu MongoDB-ren egoera, komandoa erabiliz.behean.
sudo systemctl status mongod
Orain ziurtatu mongod automatikoki abiarazten dela sistema berrabiarazteko behean erakusten den komandoa emanez.
sudo systemctl enable mongod
Orain egiaztatu ahal duzun ala ez. konektatu MongoDB zerbitzarira mongo bezeroa erabiliz.
mongo
Mongo shell-en, saiatu laguntza erabiltzen eta erakutsi dbs komandoak.
Sortu Flask aplikazioa
Erabili beheko komandoa flask-appbuilder eta mongoengine instalatzeko.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Sortu hezurdura-aplikazio bat beheko kode zatian iruzkin gisa agertzen diren balioekin.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Behean ematen denaren antzeko irteera ikusiko dugu.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Begiratu proiektuaren eta aplikazioaren diseinuari. Behean zuhaitz komandoaren irteera erakutsi dugu.
Ikus dezagun Flask konfigurazio fitxategia. Azken komandoaren ondorioz sortutako konfigurazio lehenetsia da. Kendu iruzkinak Cyborg gaiari, behean erakusten den moduan.
# 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
Eskeleton aplikazioa exekutatzeko, erabili behean emandako komandoa terminalean.
flask run
Flask Hello World
FlaskTutorialApp-en zure lehen programa sortzeko, ireki views.py fitxategia aplikazioaren direktorioan eta gehitu kodea. Bilatu fitxategian emandako inportazio adierazpenak. Gehitu adierazpen hauek dagoeneko ez badaude.
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())
Gorde fitxategia goiko iturburu kodea gehitu ondoren. Joan proiektuaren erroko direktoriora eta erabili beheko komandoa Flask-en garapen-zerbitzaria exekutatzeko.
flask run
Orain nabigatu //localhost:5000/hello/-ra irteera ikusteko.arakatzailea.
Arazketa
Gaur egun, garapen zerbitzaria ez dago Arazketa moduan exekutatzen. Arazte-modurik gabe, zaila da Flask aplikazioaren iturburu-kodean akatsak aurkitzea.
Flask-en arazketa-moduak honako hau dakar:
- Arazte moduak birkargagailu automatikoa aktibatzen du. Horrek esan nahi du ez dugula garapen zerbitzaria berrabiarazi behar aplikazioaren iturburu-kodean aldaketak egin ondoren.
- Arazte moduak Python araztailea aktibatzen du. Salbuespenean aldagaien balioak ikus ditzakegu.
- Arazte moduak Flask aplikazioaren arazketa gaitzen du. Arazketa-saioetan hainbat aldagairen balioak egiaztatu ditzakegu.
Gelditu garapen-zerbitzaria dagoeneko martxan badago. CTRL + C edo teklatuaren etenaldia erabil dezakezu gauza bera egiteko.
Erabili kode hau arazketa modua gaitzeko eta garapen-zerbitzaria aldi baterako exekutatu.
FLASK_ENV=development flask run
Bilatu Araztailearen PINaren kontsola eta egin ohar bat.
Orain alda dezagun goiko idatzitako HelloWorld ikuspegia kode zatiaren lerro hauekin. Kontuan izan salbuespen pertsonalizatu bat sartu dugula.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Nabigatu //localhost:5000/hello/-ra, eta aplikazioak salbuespen bat sortu duela ikusiko duzu. Arakatzaileak pilaren arrastoa bistaratzen du, behean erakusten den moduan.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Gainera, begiratu garapen zerbitzaria exekutatzen ari den kontsolara. Oraingoan aurkituko duzuviews.py-ko aldaketak automatikoki detektatzen dira, eta arazketa zerbitzaria berez berrabiaraziko da. Orain ez dugu eskuz berrabiarazi behar.
Konsolak lerroak izango ditu, behean erakusten den moduan. Araztu PINa idatzi behar dugu geroago.
* 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
Orain begiratu arakatzailean pilaren arrastoa eta joan azken lerrora. Egin klik gainean bere ikuspegia zabaltzeko eta egin klik CLI ikonoan shell-a modu interaktiboan irekitzeko.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Ireki ondoren, arakatzaileak Araztu PINaren gonbita erakutsiko duela ikusiko duzu. Eman Araztu PINa eta egin klik Ados botoian.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Araztu PINa eman ondoren aurrera egiten dugunean, shell interaktibora sar gaitezke.
Shell-era arakatzailetik sartzen gara eta aldagaien balioak ikuskatu ditzake Salbuespenaren kausa aurkitzeko eta errorea modu hobean kudeatzeko. Mesedez, begiratu beheko irudian erakusten den adibideetako bat.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Orain aldatu kodea view.py-n, behean erakusten den moduan. Kontuan izan Salbuespena planteatutako lerroan iruzkindu dugula.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Flask aplikazioa probatzen
Orain idatzi dezagun garatzen ari garen Flask aplikaziorako gure lehen proba. Lehenik eta behin, instalatu PyTest. PyTest proba-esparru bat da. Kode hobea idazten laguntzen digu.
Gainera, gure aplikazioak garatzen ari garen bitartean unitate-probak idatzi ditzakegulako, posible da TDD ikuspegia jarraitzea. TDD Test-Driven Development esan nahi du. Gure ondorengo tutorialetanserie honetan, beti probak idatziko ditugu lehenik eta gure ikuspegiak edo ereduak garatuko ditugu.
Instalatu PyTest
pip install pytest
Orain, sortu tests izeneko direktorio bat aplikazioaren direktorio barruan eta horretan. sortu test_hello.py izeneko fitxategia. Idatzi dezagun gure lehenengo unitate-proba gure ikuspegia probatzeko.
Kopiatu kode zati hau eta itsatsi test_hello.py-n.
#!/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
Erabili beheko pytest komandoa exekutatzeko probak. PyTest-ek automatikoki biltzen ditu Probak eta emaitzak irteera estandarrean bistaratzen ditu.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Sortu GitHub lan-fluxua
Git Actions erabiltzen dugu CI/CD lan-fluxu bat sortzeko gure adibideko aplikaziorako. Jarraitu behean aipatutako urratsak zure proiekturako.
1. urratsa: joan GitHub-eko biltegiratze orrira. Egin klik Git Actions-en.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
2. urratsa: Joan behera orrialdean eta aurkitu Python pakete baterako dagoen lan-fluxuaren txantiloia.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
3. urratsa: konfiguratu Python paketearen lan-fluxua.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
4. urratsa: python-package.yml lan-fluxuaren konfigurazioa irekitzen denean, eguneratu yaml-ren osagarriaren arabera. etiketen balioak.
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
Gure Flask aplikazioa Ubuntu Linux-en azken banaketan probatu nahi dugu. OSaz gain, gure probak Python 3.7 eta Python 3.8 erabiliz soilik exekutatu nahi ditugu.
5. urratsa: python-package.yml-a konprometitu eguneratutako balioekin.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
6. urratsa: aurreko orrialdeko konpromisoak GitActions-era eramaten gaitulanpostuak.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
7. urratsa: [Aukera]
Tutorial aplikazioaren Github Jobs orrian, bereizgarri bat sor dezakegu eta leku Eraikitze-egoera bistaratzeko README.md fitxategian.
Orain, aldaketak adar nagusiarekin konprometitzen diren bakoitzean, Git Workflow, python-package.yml-en idatzitako moduan jarraitu eta Git Actions-en exekutatu egingo da. .
Ondorioa
Tutorial honetan, oinarrizko kontzeptu guztiak landu ditugu aurrebaldintzetik CI/CD lan-fluxua konfiguratzeraino Flask erabiliz garatutako web aplikazio baterako – Python-en oinarritutako web garapen-esparru bat.
Tutorial honek beharrezko urrats guztiak biltzen ditu, hala nola Python instalatzea, deskargatzea eta amp; Flask instalatzea, Flask-Appbuilder-ekin lan egitea, PyTest-ekin probak egitea, etab. Python erabiliz web garapenarekin hasteko. Web garapen-komunitateak normalean Django izeneko Python web garapen-esparru ezagun batekin konparatzen du Flask.
Desberdintasun hauek azalduko ditugu eta marko hauek serie honetako tutorialetako batean ere alderatuko ditugu.