Šiame įvadiniame Python Flask vadovėlyje paaiškinama, kas yra Flask, Python diegimas, Virtualenv, Flask Hello World pavyzdys su kodo pavyzdžiais, derinimu ir testavimu:
Svetainių kūrimas yra labiau menas nei įgūdžiai. Tam reikia kantrybės ir kruopštumo, taip pat atkaklumo, drąsos ir atsidavimo kuriant tai, ko reikia, kad svetainė būtų tikrai sėkminga. Šiais laikais besimokantiesiems labai svarbu kuo greičiau įsisavinti žinias.
Mes sukūrėme šį "Python Flask" vadovėlį, kad mokiniai galėtų paspartinti ir įgyvendinti paprastą bei sudėtingą žiniatinklio programavimą naudodami "Python 3".
Ši "Python Flask" pamoka yra labiau panaši į "flask" pamoką pradedantiesiems, kurioje bus aptariamas "Python", "Virtualenv" ir kitų svarbiausių paketų diegimas. Šioje pamokų serijoje taip pat įdiegsime "Flask" kartu su kitais būtinais "Flask" įskiepiais. Taip pat įtraukėme skyrių apie kodo derinimą, testavimą ir nuolatinę integraciją naudojant "Git" veiksmus.
Šios "Flask" serijos pamokų sąrašas
Pamoka Nr. 1: Python Flask Tutorial - įvadas į Flask pradedantiesiems
Pamoka Nr. 2: "Flask" šablonas, forma, vaizdas ir nukreipimas su pavyzdžiais
Pamoka Nr. 3: "Flask" duomenų bazės tvarkymas - kaip naudoti "Flask" su duomenų baze
Ketvirtoji pamoka: "Flask" programos ir "Flask" projekto išdėstymas naudojant "Blueprint" ir "Bootstrap
Pamoka Nr. 5: "Flask" projektavimo modeliai ir geriausios žiniatinklio programų praktikos
Pamoka Nr. 6: Flask API pamoka su pavyzdžiu
Pamoka Nr. 7: Django Vs Flask Vs Node: kurį pagrindą pasirinkti
Pamoka Nr. 8: Top 31 Populiariausi "Python Flask" interviu klausimai su atsakymais
Kas yra "Flask
"Flask" yra žiniatinklio kūrimo sistema. Tai sistema su integruotu kūrimo serveriu ir derintuvu.
Flask karkasas pats savaime skiriasi nuo kitų archetipų, nes leidžia žiniatinklio kūrėjams būti lankstiems ir patogiai prisitaikyti prie dažnai programinės įrangos kūrėjų bendruomenėje išleidžiamų pakeitimų.
Kam naudojamas flakonas
Mes naudojame "Flask" struktūrą, skirtą žiniatinklio programoms kurti "Python" programavimo kalba. Ji integruojama su kitomis trečiųjų šalių paslaugomis ir API, kad kuriama programa būtų turtinga ir prasminga. Pagrindinės "Flask" sąvokos yra paprastos, o jos plotas nedidelis.
Pradėkime nuo šios Python Flask pamokos, kad suprastume žiniatinklio kūrimą naudodamiesi Flask GitHub saugykla. Tačiau, prieš tęsdami, klonuokite projektą iš GitHub, kad galėtumėte lengvai sekti aptartus kodo pavyzdžius.
Būtinosios sąlygos
Be šiame skyriuje minėtų antraščių, rekomenduojame susikurti "Github" paskyrą. Atlikime toliau nurodytus būtinųjų sąlygų veiksmus.
1 žingsnis: Įdiekite "Python
Patikrinkite, ar esate įdiegę "Python 3". Jei ne, atsisiųskite "Python 3" iš čia ir įdiekite jį pagal savo operacinę sistemą.
2 veiksmas: sukurkite "Python" virtualią aplinką
Sukurkite virtualią aplinką naudodami toliau pateiktą komandą.
python3 -m venv venv
Naudodami toliau pateiktą komandą aktyvuokite "Python" virtualiąją aplinką.
source venv/bin/activate
Toliau pateikiame virtualios aplinkos įjungimo ir išjungimo pavyzdį.
Visos tolesnės šios pamokos komandos turėtų būti vykdomos aktyvuotoje virtualioje aplinkoje. Įdiekite wheel paketą, kad galėtume kurti ratus virtualioje aplinkoje.
Pip install ratas
3 žingsnis: "Flask" atsisiuntimas ir įdiegimas
Reikia atlikti "Flask" atsisiuntimo veiksmus ir įdiegti "Flask" naudojant toliau nurodytus veiksmus.
Dabar įdiekite "Flask".
Pip install flask
Kai kurie iš mūsų mėgsta dirbti kartu su naujausiais šaltinio kodo pakeitimais. Norėdami įdiegti naujausius "Flask" šaltinių pakeitimus, galime naudoti toliau pateiktą komandą.
Sukurkite laikiną katalogą.
mkdir tmp
Dabar įdiekite "Flask" iš "Github" saugyklos. Kad toliau pateikta komanda veiktų, turite būti prisijungę prie interneto.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Peržiūrėkite konsolės išvestis, kad patikrintumėte, ar įdiegimas pavyko. Dabar patikrinkite, ar galime pasiekti "Flask" komandas.
flask --help
Galbūt pamatysite keletą išimčių dėl "Flask" programos nebuvimo. Tačiau nekreipkite į jas dėmesio, nes mes nesukūrėme jokios "Flask" programos. Mūsų programa yra "Flask", kuri yra "Werkzeug" žiniatinklio struktūros ir "Jinja" šablonavimo variklio apvalkalas, egzempliorius.
Werkzeug
Werkzeug yra WSGI įrankių rinkinys. WSGI - tai tik žiniatinklio serverių kreipimosi konvencija, skirta perduoti žiniatinklio užklausos į žiniatinklio programas, parašytas Python programavimo kalba.
Jinja
Šablonavimas yra labai svarbus žiniatinklio kūrėjų įgūdžių rinkinys. Jinja yra visiškai funkcionalus ir populiarus šablonavimo variklis, skirtas Python. Tai gana išraiškinga kalba, kuri šablonų autoriams suteikia patikimą įrankių rinkinį.
4 žingsnis: Įdiekite "MongoDB
Norėdami įdiegti "MongoDB", atlikite toliau nurodytus žingsnius. Mes aprašėme žingsnius, kaip ją įdiegti "Debian Linux" sistemoje. Jei naudojate kitą operacinę sistemą, peržiūrėkite nuorodą ir įdiekite pagal numatytą operacinę sistemą.
Įdiekite gnupg, kad galėtumėte importuoti MongoDB viešąjį GPG raktą.
sudo apt-get install gnupg
Dabar importuokite raktą naudodami toliau pateiktą komandą.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc
Sukurkite šaltinių sąrašo failą pagal savo "Linux" distribuciją. Mes pridėjome šaltinių sąrašą pagal "Debian".
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main"
Paleiskite atnaujinimo komandą
sudo apt-get update
Dabar įdiekite "MongoDB", naudodami toliau pateiktą komandą.
sudo apt-get install -y mongodb-org
Sėkmingai įdiegus, paleiskite "MongoDB" naudodami toliau pateiktą komandą.
sudo systemctl start mongod
Patikrinkite "MongoDB" būseną naudodami toliau pateiktą komandą.
sudo systemctl status mongod
Dabar užtikrinkite, kad mongod automatiškai įsijungtų perkraunant sistemą, pateikdami toliau pateiktą komandą.
sudo systemctl enable mongod
Dabar patikrinkite, ar galite prisijungti prie "MongoDB" serverio naudodami mongo klientą.
mongo
Mongo apvalkale pabandykite naudoti komandas help ir show dbs.
Sukurti "Flask" programėlę
Naudodami toliau pateiktą komandą įdiekite "flask-appbuilder" ir "mongoengine".
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Sukurkite programėlės skeletą su toliau pateiktoje kodo fragmentų pastabose nurodytomis reikšmėmis.
flask fab create-app # Į komandinės eilutės klausimyną įrašykite šias reikšmes # Programos pavadinimas: flaskTutorialApp # Variklio tipas : MongoEngine
Pamatysime išvestį, panašią į pateiktą toliau.
Jūsų naujos programos pavadinimas: exampleApp Jūsų variklio tipas, SQLAlchemy arba MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Atsisiuntėte skeleto programą, geras kodavimas!
Pažvelkite į projekto ir programos išdėstymą. Toliau pateikiame medžio komandos išvestį.
Pažvelkime į "Flask" konfigūracijos failą. Tai yra numatytoji konfigūracija, sukurta atlikus paskutinę komandą. Panaikinkite komentarą Kiborgas tema, kaip parodyta toliau.
# Temos konfigūracija Cybord=g # šios temos yra static/appbuilder/css/themes # Galime sukurti savo ir lengvai naudoti jas, patalpindami jas į tą pačią dir struktūrą, kad būtų galima pakeisti #APP_THEME = "bootstrap-theme.css" # numatytoji bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia tema #APP_THEME = "cosmo.css" # cosmo tema APP_THEME = "cyborg.css" # cyborgtema #APP_THEME = "flatly.css" # flatly tema
Norėdami paleisti skeleto programą, terminale naudokite toliau pateiktą komandą.
kolbos paleidimas
Flask Sveikas pasaulis
Norėdami sukurti pirmąją programą "flaskTutorialApp", atidarykite failą views.py, esantį programos kataloge, ir pridėkite šį kodą. Ieškokite faile pateiktų importo teiginių. Jei jų dar nėra, pridėkite šiuos teiginius.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ Šis pirmasis pamokos vaizdas """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # failo pabaigoje appbuilder.add_view_no_menu(HelloWorld())
Įrašę pirmiau nurodytą šaltinio kodą, išsaugokite failą. Eikite į projekto šakninį katalogą ir naudokite toliau pateiktą komandą, kad paleistumėte "Flask" kūrimo serverį.
kolbos paleidimas
Dabar pereikite į //localhost:5000/hello/ ir peržiūrėkite išvestį naršyklėje.
Derinimas
Šiuo metu kūrimo serveris neveikia derinimo režimu. Be derinimo režimo sunku rasti klaidų "Flask" taikomosios programos išeities kode.
"Flask" derinimo režimas lemia šiuos rezultatus:
- Derinimo režimu įjungiamas automatinis perkroviklis. Tai reiškia, kad atlikus pakeitimus programos išeities kode nereikia iš naujo paleisti kūrimo serverio.
- Derinimo režimas įjungia Python derintuvą. Išimties metu galime tikrinti kintamųjų reikšmes.
- Derinimo režimas įgalina "Flask" programos derinimą. Derinimo seansuose galime patikrinti įvairių kintamųjų reikšmes.
Sustabdykite kūrimo serverį, jei jis jau veikia. Tai galite padaryti naudodami CTRL + C arba klaviatūros pertraukimą.
Norėdami įjungti derinimo režimą ir laikinai paleisti kūrimo serverį, naudokite šį kodą.
FLASK_ENV=development flask run
Konsolėje ieškokite derintuvo PIN kodo ir jį užsirašykite.
Dabar pakeiskime pirmiau parašytą HelloWorld rodinį šiomis kodo fragmento eilutėmis. Atkreipkite dėmesį, kad įvedėme pasirinktinę išimtį.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Pereikite į //localhost:5000/hello/ ir pamatysite, kad programa iškėlė išimtį. Naršyklėje rodoma kamino seka, kaip parodyta toliau.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Be to, pažvelkite į konsolę, kurioje veikia kūrimo serveris. Pamatysite, kad šį kartą peržiūros.py pakeitimai aptinkami automatiškai ir derinimo serveris paleidžiamas iš naujo savaime. Dabar mums nereikia jo paleisti iš naujo rankiniu būdu.
Konsolėje atsiras eilučių, kaip parodyta toliau. Vėliau turime užsirašyti derinimo PIN kodą.
* Aptiktas pokytis '/work/sth/flaskTutorialApp/app/views.py', perkrovimas 2020-06-02 14:59:49,354:INFO:werkzeug: * Aptiktas pokytis '/work/sth/flaskTutorialApp/app/views.py', perkrovimas * Paleidžiama iš naujo su stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Paleidžiama iš naujo su stat * Derintuvas aktyvus! * Derintuvas PIN: 150-849-897
Dabar naršyklėje patikrinkite kamino seką ir pereikite prie paskutinės eilutės. Spustelėkite ją, kad išplėstumėte jos vaizdą, ir spustelėkite CLI piktogramą, kad interaktyviuoju režimu atidarytumėte apvalkalą.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Jį atidarę pamatysite, kad naršyklėje bus rodomas raginimas nurodyti derinimo PIN kodą. Nurodykite derinimo PIN kodą ir spustelėkite Gerai.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Pateikę derinimo PIN kodą, galėsime pereiti prie interaktyviojo apvalkalo.
Iš naršyklės prieiname prie apvalkalo ir galime patikrinti kintamųjų vertes, kad rastume išimties priežastį ir geriau tvarkytume klaidą. Pažvelkite į vieną iš toliau pateiktame paveikslėlyje parodytų pavyzdžių.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Dabar pakeiskite view.py kodą, kaip parodyta toliau. Atkreipkite dėmesį, kad pakomentavome eilutę, kurioje buvo iškelta išimtis.
@expose("/") def hello(self): # raise Exception("Pasirinktinė išimtis DEBUG režimui išmokti") return "Hello, World! from Software Testing Help"
"Flask" programos testavimas
Dabar parašykime pirmąjį mūsų kuriamos "Flask" programos testą. Pirmiausia įdiekite "PyTest". PyTest yra testavimo sistema. Ji padeda mums rašyti geresnį kodą.
Be to, vien dėl to, kad kurdami programas galime rašyti vienetinius testus, galima vadovautis TDD metodu. TDD reiškia Test-Driven Development (į testus orientuota plėtra). Vėlesniuose šios serijos vadovėliuose visada pirmiausia rašysime testus, o po to kursime savo vaizdus arba modelius.
Įdiegti PyTest
Pip install pytest
Dabar programėlės kataloge sukurkite katalogą, pavadintą tests, ir jame sukurkite failą, pavadintą test_hello.py. Parašykime pirmąjį vieneto testą, kad išbandytume savo vaizdą.
Nukopijuokite šią kodo fragmentą ir įklijuokite jį į 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
Testams paleisti naudokite toliau pateiktą pytest komandą. PyTest automatiškai surenka Testus ir parodo rezultatus standartinėje išvestyje.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Sukurti "GitHub" darbo eigą
Naudojame "Git Actions", kad sukurtume CI/CD darbo eigą mūsų pavyzdinei programai. Atlikite toliau nurodytus žingsnius savo projektui.
1 veiksmas: Pereikite į "GitHub" saugyklos puslapį. Spustelėkite "Git Actions".
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
2 veiksmas: slinkite puslapiu žemyn ir raskite esamą "Python" paketo darbo eigos šabloną.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
3 veiksmas: "Python" paketo "Workflow" konfigūravimas.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
4 veiksmas: Atidarę python-package.yml darbo eigos konfigūraciją, atnaujinkite ją pagal pateiktas yaml papildomų žymių reikšmes.
vardas: flaskTutorialApp užduotys: build: runs-on: ubuntu-latest strategija: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] žingsniai: - vardas: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # kitos reikšmės
Savo "Flask" programą norime išbandyti naujausiame "Ubuntu Linux" distributyve. Be operacinės sistemos, bandymus norime atlikti tik naudodami "Python 3.7" ir "Python 3.8".
5 veiksmas: atiduokite python-package.yml su atnaujintomis reikšmėmis.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
6 veiksmas: ankstesniame puslapyje atliktas įsipareigojimas perkelia mus į "GitActions" darbo vietas.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
7 veiksmas: [Neprivaloma]
Pavyzdinės mokomosios programos "Github" darbo vietų puslapyje galime sukurti ženkliuką ir įdėti jį į README.md failą, kad būtų rodoma surinkimo būsena.
Dabar, kai tik pakeitimai bus perduodami į pagrindinę šaką, "Git" darbo eiga, kaip parašyta python-package.yml, bus vykdoma ir paleidžiama "Git" veiksmais.
Išvada
Šioje pamokoje apžvelgėme visas pagrindines sąvokas - nuo išankstinių sąlygų iki CI/CD darbo eigos nustatymo žiniatinklio programai, sukurtai naudojant "Flask" - "Python" pagrįstą žiniatinklio kūrimo sistemą.
Ši pamoka apima visus būtinus veiksmus, pavyzdžiui, Python diegimą, & atsisiuntimą; Flask diegimą, darbą su Flask-Appbuilder, testavimą su PyTest ir t. t., kad galėtumėte pradėti kurti žiniatinklio svetaines naudodami Python. Žiniatinklio svetainių kūrimo bendruomenė paprastai lygina Flask su kita populiaria Python žiniatinklio kūrimo sistema, vadinama Django.
Šiuos skirtumus paaiškinsime ir palyginsime viename iš šios serijos vadovėlių.