Tutorial #5: Nimûneyên Sêwirana Flask Û Pratîkên Baştirîn Ji Bo Serlêdanên Malperê
Tutorial #6: Dersa API-ya Flask Bi Mînak
Ev dersa destpêkî ya Python Flask rave dike Flask çi ye, sazkirina Python, Virtualenv, mînaka Flask Hello World bi beşek li ser nimûneyên kodê, xeletîkirin, û ceribandinê:
Pêşveçûna malperê ye ji jêhatîbûnê zêdetir hunerek e. Ew sebir û xîret hewce dike, ligel bîhnfirehî, wêrekî, û dilsoziyê ji bo afirandina tiştê ku ji bo serkeftinek rastîn hewce dike biafirîne. Di van rojan de, pêdivî ye ku xwendekar zû zû zû bilezînin.
Me ev dersa Python Flask ji bo xwendekaran çêkir ku lezê bidin û bi karanîna Python 3 bernamesaziya malperê ya hêsan û tevlihev bi kar bînin. .
Ev dersa Python Flask bêtir dişibihe dersek destpêkek flaskek e, ku dê li ser sazkirina Python, Virtualenv, û pakêtên din ên bingehîn. Di vê rêzeya dersan de, em ê li gel pêvekên din ên Flask ên pêwîst Flask jî saz bikin. Di heman demê de me beşek li ser xeletkirina kodê, ceribandin û entegrasyona domdar bi karanîna Karên Git jî vekiriye.
Lîsteya Dersên Di Vê Rêzeya Flask de
Tutorial #1: Python Flask Tutorial – Destpêka Flask Ji Bo Destpêkeran
Tutorial #2: Şablon, Form, Dîtin û Beralîkirin Bi Nimûneyan re Flask
Tutorial #3: Birêvebirina Danegeha Flask – Meriv çawa Flask Bi Danegehek Bikaranîne
Tutorial #4: Flask App And Layout Project Flask With Blueprint &di şert û mercan de gavan behsa wan kir.
Gavek 1: Python saz bike
Kontrol bikin ka we Python 3 saz kiriye an na. Ger na, wê hingê Python 3-ê ji vir dakêşînin û li gorî Pergala Xebatê ya xwe saz bikin.
Gavê 2: Jîngehek Virtualî ya Python biafirînin
Bi karanîna jîngehek virtual biafirînin. fermana jêrîn.
python3 -m venv venv
Ji bo çalakkirina jîngeha virtual ya Python fermana jêrîn bikar bînin.
source venv/bin/activate
Me li jêr mînakek aktîvkirin û neçalakkirina jîngeha virtual da.
Hemû emrên paşîn ên di vê tutoriyê de divê di hawîrdorek virtual ya aktîfkirî de werin xebitandin. Pakêta çerxerê saz bikin da ku em di hundurê hawîrdora virtual de tekeran ava bikin.
pip install wheel
Gavek 3: Daxistina Flask Û Sazkirin
Divê em gavên dakêşana Flask pêk bînin û Bi gavên ku li jêr hatine behs kirin Flask saz bikin.
Niha Flask saz bikin.
pip install flask
Hinek ji me dixwazin bi guhertinên koda çavkaniyê yên herî dawî re bixebitin. Em dikarin fermana jêrîn bikar bînin da ku bi guherandinên herî dawî yên çavkaniyên Flask re saz bikin.
Pelrokek demkî çêbikin.
mkdir tmp
Niha Flask ji depoya Github saz bikin. Ji bo ku emrê jêrîn bixebite divê hûn bi înternetê ve girêdayî bimînin.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Li derketinên konsolê binêre da ku sazkirina serketî kontrol bikin. Niha kontrol bikin ka em dikarin xwe bigihînin fermanên Flask.
flask --help
Dibe ku hûn li ser tunebûna Flask hin îstîsnayan bibîninbikaranînî. Lêbelê, wan ji bîr nekin ji ber ku me serîlêdana Flask neafirandiye. Serlêdana me mînakek Flask e, ku li ser çarçoweya webê ya Werkzeug û motora şablonê Jinja palpiştek e.
Werkzeug
Werkzeug amûrek WSGI ye. WSGI tenê ji bo pêşkêşkerên webê peymanek bangewaziyê ye ku daxwazên webê bişînin ser sepanên webê yên ku bi zimanê bernamesaziya Python hatine nivîsandin.
Jinja
Şablonek e jêhatîbûna bingehîn a pêşdebirên malperê. Jinja ji bo Python motorek şablonê bi tevahî-taybetmend û populer e. Ew zimanek têra xwe diyarker e û komek amûrek bihêz ji nivîskarên şablonê re peyda dike.
Gavê 4: MongoDB saz bikin
Gavên jêrîn bişopînin da ku MongoDB saz bikin. Me gavên ji bo sazkirina wê li Linux-ya bingehîn a Debian diyar kiriye. Heke hûn pergalek xebitandinê ya din bikar tînin, wê hingê xwe bigihînin girêdanê û li gorî pergala xebitandinê ya armanckirî saz bikin.
Gnupg-ê ji bo îtxalkirina mifteya GPG-ya giştî ya MongoDB saz bikin.
sudo apt-get install gnupg
Niha bi fermana jêrîn mifteyê îtxal bikin.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Li gorî belavkirina Linuxê pelê lîsteya çavkaniyan biafirînin. Me navnîşa çavkaniyan li gorî Debian zêde kiriye.
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
Emrê nûvekirinê bixebitîne
sudo apt-get update
Niha MongoDB saz bikin, bi karanîna fermana jêrîn.
sudo apt-get install -y mongodb-org
Dema ku sazkirin serketî bû, MongoDB bi karanîna fermana jêrîn dest pê bikin.
sudo systemctl start mongod
Rewşa MongoDB-ê, bi karanîna fermanê ve kontrol bikinli jêr.
sudo systemctl status mongod
Niha piştrast bikin ku mongod bixweber dest bi ji nû vebootkirina pergalê bi dayîna fermana jêrîn nîşan bide.
sudo systemctl enable mongod
Niha kontrol bikin ka hûn dikarin bi karûbarê mongo ve bi pêşkêşkara MongoDB ve girêdin.
mongo
Di şêlê mongo de, biceribînin ku alîkariyê bikar bînin û fermanên dbs nîşan bidin.
Serlêdanek Flask Biafirînin
Ji bo sazkirina flask-appbuilder û mongoengine fermana jêrîn bikar bînin.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Serîlêdanek îskeletek bi nirxên ku di qutiya koda jêrîn de wekî şîrove têne xuyang kirin biafirînin.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Em ê encamek mîna ya li jêr bibînin.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Li sêwirana proje û sepanê binêre. Me encamnameya fermana darê li jêr nîşan da.
Werin em li pelê mîhengê Flask binêrin. Ew mîhengek xwerû ye ku di encama fermana paşîn de hatî çêkirin. Temaya Cyborg şîrove neke, wekî li jêr tê nîşandan.
# 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
Ji bo xebitandina sepana skeletonê, emrê jêrîn li ser termînalê bikar bînin.
flask run
Flask Hello World
Ji bo afirandina bernameya xweya yekem di flaskTutorialApp de, pelê views.py di bin pelrêça sepanê de veke û koda jêrîn lê zêde bike. Li daxuyaniyên importê yên ku di pelê de têne dayîn bigerin. Heke jixwe ne amade bin van gotinan lê zêde bikin.
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())
Piştî koda çavkaniyê ya jorîn lê zêde bikin pelê hilînin. Herin pelrêça root ya projeyê û fermana jêrîn bikar bînin da ku servera pêşkeftina Flask bimeşînin.
flask run
Niha bigerin //localhost:5000/hello/ da ku hûn encamek di nav de bibîningerokê.
Debugkirin
Niha, servera pêşkeftinê di moda Debug de naxebite. Bêyî moda xeletkirinê, zehmet e ku meriv xeletiyên di koda çavkaniyê ya Serlêdana Flask de bibîne.
Moda Debugkirinê di Flask de encamên jêrîn vedigire:
- Moda Debug Vebarkera Xweser çalak dike. Wateya wê ew e ku piştî ku em di koda çavkaniyê ya serîlêdanê de guheztinan bikin, hewce nake ku em servera pêşkeftinê ji nû ve bidin destpêkirin.
- Moda Debug debuggera Python çalak dike. Em dikarin nirxên guherbaran di dema Îstîsnayê de teftîş bikin.
- Moda Debug rastkirina xeletiya sepana Flask dike. Em dikarin di danişînên çewtkirinê de nirxê guhêrbaran kontrol bikin.
Heke ew jixwe dixebitîne pêşkêşkara pêşkeftinê rawestîne. Hûn dikarin CTRL + C an jî astengkirina Klavyeyê bikar bînin da ku heman yekê bikin.
Koda jêrîn bikar bînin ku moda çewtiyê çalak bikin û pêşkêşkara pêşkeftinê bi demkî bimeşînin.
FLASK_ENV=development flask run
Lêgerîn konsolê ji bo Debugger PIN-ê û têbînîyekê jê re çêkin.
Niha em dîtina HelloWorld-a jorîn a nivîsandî bi rêzikên jêrîn ên qutiya kodê biguherînin. Bala xwe bidinê ku me îstîsnayek xwerû destnîşan kiriye.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Navîgîne ser //localhost:5000/hello/, û hûn ê bibînin ku serîlêdanê îstîsnayek zêde kiriye. Gerok şopa stackê nîşan dide, wek ku li jêr tê nîşandan.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Herweha, li konsoleya ku servera pêşkeftinê lê dixebitîne binêre. Hûn ê bibînin ku vê carê, yaguhertinên di views.py-ê de bixweber têne kifş kirin, û servera debugkirinê bixwe ji nû ve dest pê dike. Niha ne hewce ye ku em bi destan wê ji nû ve bidin destpêkirin.
Wê konsolê xêzên xwe hebin, wekî li jêr tê nîşandan. Divê em PIN-a Debug-ê ji bo paşê binivîsin.
* 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
Niha di gerokê de şopa stikê kontrol bikin û biçin rêza dawî. Li ser wê bikirtînin da ku dîtina wê berfireh bikin û li ser îkonê CLI bikirtînin da ku şêlê di moda înteraktîf de vekin.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Dema ku hûn wê vekin, hûn ê bibînin ku gerok dê ji bo PIN-a Debug-ê tavilê nîşan bide. PIN-a Debug-ê bidin û li ser OK bikirtînin.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Piştî dayîna PIN-a Debug-ê, em dikarin xwe bigihînin şêlê înteraktîf.
Em ji hundurê gerokê digihîjin şêlê û dikare nirxên guherbaran teftîş bike da ku sedema Îstîsnayê bibîne û xeletiyê bi awayek çêtir rêve bibe. Ji kerema xwe li yek ji mînakên ku di wêneya jêrîn de têne xuyang kirin binêrin.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Niha kodê li view.py biguherînin, wekî li jêr tê xuyang kirin. Bala xwe bidinê ku me li ser rêza ku îstîsna bilindkirî bû şîrove kir.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Testkirina Serlêdana Flask
Niha em ceribandina xweya yekem ji bo sepana Flask a ku em pêşdixin binivîsin. Pêşîn, PyTest saz bikin. PyTest çarçoveyek ceribandinê ye. Ew ji me re dibe alîkar ku em kodek çêtir binivîsin.
Zêdetir, tenê ji ber ku em dikarin ceribandinên yekîneyê di dema pêşdebirina sepanên xwe de binivîsin, gengaz e ku meriv nêzîkatiya TDD bişopîne. TDD ji bo Pêşveçûna Test-Driven radiweste. Di dersên me yên paşîn devê rêzê, em ê her gav pêşî ceribandinan binivîsin û dîtin an modelên xwe pêş bixin.
PyTest saz bikin
pip install pytest
Niha di hundurê pelrêça sepanê de pelrêçek bi navê test biafirînin û tê de pelek bi navê test_hello.py biafirîne. Werin em ceribandina yekîneya xweya yekem binivîsin da ku dîtina xwe biceribîne.
Parça koda jêrîn kopî bikin û têxin 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
Ji bo xebitandinê emrê jêrîn pytest bikar bînin testên. PyTest bixweber Testan berhev dike û encaman li ser derana standard nîşan dide.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Karûbarek GitHub Biafirîne
Em Çalakiyên Git bikar tînin da ku ji bo sepana nimûneya xwe xebatek CI/CD çêbikin. Ji bo projeya xwe gavên jêrîn bişopînin.
Gavê 1: Li ser GitHub-ê biçin rûpela depoyê. Li ser Çalakiyên Git bikirtînin.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Gavê 2: Li ser rûpelê bigerin û ji bo pakêtek Python şablonek xebata heyî bibînin.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Gav 3: Pakêta Python Workflow saz bike.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Gavek 4: Dema ku veavakirina xebata python-package.yml vebe, wê li ser bingeha yaml-a zêde ya hatî dayîn nûve bike. nirxên tagê.
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
Em dixwazin sepana xweya Flask li ser belavkirina Ubuntu Linux ya herî dawî biceribînin. Ji bilî OS-ê, em dixwazin ceribandinên xwe tenê bi karanîna Python 3.7 û Python 3.8 bimeşînin.
Gavek 5: Bi nirxên nûvekirî python-package.yml bicîh bikin.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Gav 6: Peymana di rûpela berê de me digihîne GitActionskaran.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Gavê 7: [Vêbijarkî]
Li ser rûpela Github Jobs ji bo sepana dersê ya nimûne, em dikarin nîşanek û cîhek çêbikin ew li ser pelê README.md ji bo nîşandana statûya çêkirinê.
Niha, her ku guheztin bi şaxê sereke re têne pejirandin, Git Workflow, wekî ku di python-package.yml de hatî nivîsandin, dê were şopandin û li ser Karên Git-ê were xebitandin. .
Encam
Di vê dersê de, me hemî têgehên bingehîn ji şert û mercan bigire heya sazkirina xebata CI/CD ji bo serîlêdanek webê ya ku bi karanîna Flask ve hatî pêşve xistin - Çarçoveyek pêşkeftina malperê ya bingehîn a Python-ê.
Ev tutorial hemî gavên pêwîst ên wekî sazkirina Python, dakêşandin & sazkirina Flask, bi Flask-Appbuilder re xebitîn, bi PyTest re ceribandin, hwd. da ku hûn bi karanîna Python-ê bi pêşveçûna malperê dest pê bikin. Civaka pêşkeftina malperê bi gelemperî Flask bi çarçoveyek din a pêşkeftina tevnerê ya Python a bi navê Django re berhev dike.
Em ê van cûdahiyan rave bikin û hem jî di yek ji dersên vê rêzê de van çarçoweyan bidin ber hev.