Mafunzo #5: Miundo ya Muundo wa Flask na Mbinu Bora kwa Matumizi ya Wavuti
Mafunzo #6: Mafunzo ya API ya Flask Pamoja na Mfano
Mafunzo haya ya utangulizi ya Flask ya Python yanafafanua Flask ni nini, usakinishaji wa Python, Virtualenv, Flask Hello World mfano na sehemu ya mifano ya misimbo, utatuzi na majaribio:
Utengenezaji wa tovuti ni zaidi ya sanaa kuliko ujuzi. Inahitaji uvumilivu na bidii, pamoja na uvumilivu, ujasiri, na kujitolea kuunda kile kinachohitajika ili kuwa na mafanikio ya kweli. Siku hizi, ni muhimu kwa wanafunzi kupata kasi haraka iwezekanavyo.
Tumeunda mafunzo haya ya Python Flask kwa wanafunzi ili kupata kasi na kutekeleza programu rahisi na changamano ya wavuti kwa kutumia Python 3 .
Mafunzo haya ya Python Flask ni kama mafunzo ya kuanza kwa chupa, ambayo yatashughulikia usanikishaji wa Python, Virtualenv, na vifurushi vingine muhimu. Katika mfululizo huu wa mafunzo, tutasakinisha pia Flask pamoja na programu-jalizi zingine muhimu za Flask. Pia tumejumuisha sehemu ya utatuzi wa msimbo, majaribio, na ujumuishaji unaoendelea kwa kutumia Vitendo vya Git.
Orodha ya Mafunzo Katika Mfululizo Huu wa Flask
Mafunzo #1: Python Flask Mafunzo - Utangulizi wa Flask Kwa Wanaoanza Ushughulikiaji Hifadhidata ya Chupa - Jinsi ya Kutumia Chupa Yenye Hifadhidata
Mafunzo #4: Programu ya Flask na Mpangilio wa Mradi wa Flask Ukiwa na Blueprint &zilizotaja hatua katika sharti.
Hatua ya 1: Sakinisha Chatu
Angalia ikiwa umesakinisha Python 3 au la. Ikiwa sivyo, basi pakua Python 3 kutoka hapa na uisakinishe kulingana na Mfumo wako wa Uendeshaji.
Hatua ya 2: Unda Mazingira Pepe ya Chatu
Unda mazingira pepe kwa kutumia chini ya amri.
python3 -m venv venv
Tumia amri iliyo hapa chini ili kuamilisha mazingira pepe ya Python.
source venv/bin/activate
Tumetoa mfano wa kuwezesha na kulemaza mazingira pepe hapa chini.
Amri zote zinazofuata katika somo hili zinapaswa kutekelezwa katika mazingira ya mtandaoni yaliyoamilishwa. Sakinisha kifurushi cha magurudumu ili tuweze kutengeneza magurudumu ndani ya mazingira ya mtandaoni.
pip install wheel
Hatua ya 3: Kupakua Flask na Kuingiza
Tunahitaji kutekeleza hatua za kupakua Flask na sakinisha Flask kwa kutumia hatua zilizotajwa hapa chini.
Sasa sakinisha Flask.
pip install flask
Baadhi yetu tunapenda kufanya kazi pamoja na mabadiliko ya hivi punde ya msimbo wa chanzo. Tunaweza kutumia amri iliyotolewa hapa chini ili kusakinisha na mabadiliko ya hivi punde kwa vyanzo vya Flask.
Tengeneza saraka ya muda.
mkdir tmp
Sasa sakinisha Flask kutoka kwenye hazina ya Github. Unahitaji kubaki umeunganishwa kwenye intaneti ili amri iliyo hapa chini ifanye kazi.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Angalia matokeo ya kiweko ili kuangalia usakinishaji uliofaulu. Sasa angalia kama tunaweza kufikia amri za Flask.
flask --help
Unaweza kuona isipokuwa kuhusu kukosekana kwa Flask.maombi. Hata hivyo, zipuuze kwani hatujaunda programu yoyote ya Flask. Programu yetu ni mfano wa Flask, ambayo ni kanga kwenye mfumo wa wavuti wa Werkzeug na injini ya kutengeza ya Jinja.
Werkzeug
Werkzeug ni zana ya zana ya WSGI. WSGI ni mwito tu kwa seva za wavuti kusambaza maombi ya wavuti kwa programu za wavuti zilizoandikwa kwa lugha ya programu ya Python.
Jinja
Kuweka kiolezo ni utaratibu ujuzi muhimu wa watengenezaji wavuti. Jinja ni injini ya violezo iliyoangaziwa kikamilifu na maarufu ya Chatu. Ni lugha inayoeleweka na hutoa seti thabiti ya zana kwa waandishi wa violezo.
Hatua ya 4: Sakinisha MongoDB
Fuata hatua zilizotajwa hapa chini ili kusakinisha MongoDB. Tumeelezea hatua za kuisakinisha kwenye Linux inayotegemea Debian. Ikiwa unatumia mfumo mwingine wa uendeshaji, basi fikia kiungo na usakinishe kulingana na mfumo wa uendeshaji unaokusudiwa.
Sakinisha gnupg kwa ajili ya kuleta ufunguo wa GPG wa umma wa MongoDB.
sudo apt-get install gnupg
1>Sasa leta ufunguo ukitumia amri iliyo hapa chini.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Unda faili ya orodha ya vyanzo kulingana na usambazaji wako wa Linux. Tumeongeza orodha ya vyanzo kulingana na Debian.
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
Tekeleza amri ya sasisho
sudo apt-get update
Sasa sakinisha MongoDB, kwa kutumia amri iliyo hapa chini.
sudo apt-get install -y mongodb-org
Pindi usakinishaji unapofaulu, anza MongoDB kwa kutumia amri iliyo hapa chini.
sudo systemctl start mongod
Angalia hali ya MongoDB, kwa kutumia amri.hapa chini.
sudo systemctl status mongod
Sasa hakikisha kuwa mongod inaanza kiotomatiki wakati mfumo ukiwashwa upya kwa kutoa amri iliyo hapa chini.
sudo systemctl enable mongod
Sasa angalia kama unaweza unganisha kwenye seva ya MongoDB kwa kutumia kiteja cha mongo.
mongo
Katika ganda la mongo, jaribu kutumia usaidizi na uonyeshe amri za dbs.
Unda Programu ya Flask
Tumia amri iliyo hapa chini kusakinisha flask-appbuilder na mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Unda programu ya mifupa yenye thamani zilizoonyeshwa kama maoni katika kijisehemu cha msimbo hapa chini.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Tutaona matokeo sawa na yaliyotolewa hapa chini.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Angalia mpangilio wa mradi na programu. Tumeonyesha matokeo ya amri ya mti hapa chini.
Hebu tuangalie faili ya usanidi wa Flask. Ni usanidi chaguo-msingi unaozalishwa kama matokeo ya amri ya mwisho. Toa maoni mandhari ya Cyborg , kama inavyoonyeshwa hapa chini.
# 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
Ili kuendesha programu ya mifupa, tumia amri uliyopewa hapa chini kwenye kifaa cha kulipia.
flask run
Flask Hello World
Ili kuunda programu yako ya kwanza katika FlaskTutorialApp, fungua views.py faili chini ya saraka ya programu na uongeze msimbo ufuatao. Tafuta taarifa za uingizaji zilizotolewa kwenye faili. Ongeza taarifa hizi kama bado hazipo.
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())
Hifadhi faili baada ya kuongeza msimbo wa chanzo hapo juu. Nenda kwenye saraka ya mizizi ya mradi na utumie amri iliyo hapa chini ili kuendesha seva ya ukuzaji ya Flask.
flask run
Sasa nenda kwa //localhost:5000/hello/ ili kuona matokeo katikakivinjari.
Utatuzi
Kwa sasa, seva ya usanidi haifanyi kazi katika hali ya Utatuzi. Bila hali ya utatuzi, ni vigumu kupata hitilafu katika msimbo wa chanzo wa Programu ya Flask.
Njia ya Utatuzi katika Flask husababisha yafuatayo:
- Hali ya utatuzi huwasha Kipakiaji upya Kiotomatiki. Ina maana kwamba hatuhitaji kuanzisha upya seva ya usanidi baada ya kufanya mabadiliko katika msimbo wa chanzo wa programu.
- Hali ya utatuzi huwasha kitatuzi cha Python. Tunaweza kukagua thamani za viambajengo wakati wa Vighairi.
- Hali ya utatuzi huwezesha utatuzi wa programu ya Flask. Tunaweza kuangalia thamani za vigezo mbalimbali katika vipindi vya utatuzi.
Simamisha seva ya usanidi ikiwa tayari inafanya kazi. Unaweza kutumia CTRL + C au kukatiza Kibodi kufanya vivyo hivyo.
Tumia msimbo ufuatao ili kuwezesha modi ya utatuzi na uendeshe seva ya usanidi kwa muda.
FLASK_ENV=development flask run
Tafuta kiweko cha PIN ya Kitatuzi na uiandike.
Sasa hebu tubadilishe mwonekano wa HelloWorld ulioandikwa hapo juu kwa mistari ifuatayo ya kijisehemu cha msimbo. Kumbuka kwamba tumeanzisha ubaguzi maalum.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Abiri hadi //localhost:5000/hello/, na utaona kwamba programu imeleta ubaguzi. Kivinjari kinaonyesha ufuatiliaji wa rafu, kama inavyoonyeshwa hapa chini.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Zaidi ya hayo, angalia kiweko ambapo seva ya usanidi inafanya kazi. Utagundua kuwa wakati huu,mabadiliko katika view.py hugunduliwa kiotomatiki, na seva ya utatuzi huanza tena yenyewe. Sasa hatuhitaji kuianzisha upya.
Dashibodi itakuwa na mistari, kama inavyoonyeshwa hapa chini. Tunahitaji kuandika PIN ya Utatuzi baadaye.
* 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
Sasa angalia ufuatiliaji wa rafu kwenye kivinjari na uende kwenye mstari wa mwisho. Bofya juu yake ili kupanua mwonekano wake na ubofye aikoni ya CLI ili kufungua ganda katika hali ya mwingiliano.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Pindi unapoifungua, Utaona kwamba kivinjari kitaonyesha kidokezo cha PIN ya Utatuzi. Toa PIN ya Utatuzi na ubofye Sawa.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Tunapoendelea baada ya kutoa PIN ya Utatuzi, tunaweza kufikia shell shirikishi.
Tunafikia shell kutoka ndani ya kivinjari na inaweza kukagua maadili ya anuwai ili kupata sababu ya Isipokuwa na kushughulikia kosa kwa njia bora. Tafadhali angalia mojawapo ya mifano iliyoonyeshwa kwenye picha hapa chini.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Sasa badilisha msimbo katika view.py, kama inavyoonyeshwa hapa chini. Kumbuka kuwa tumetoa maoni kuhusu laini ambayo ilikuwa na Isipokuwa kilichotolewa.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Kujaribu Programu ya Flask
Sasa hebu tuandike jaribio letu la kwanza la programu tumizi ya Flask tunayotengeneza. Kwanza, sasisha PyTest. PyTest ni mfumo wa majaribio. Inatusaidia kuandika msimbo bora zaidi.
Aidha, kwa sababu tu tunaweza kuandika majaribio ya kitengo tunapotengeneza programu zetu, inawezekana kufuata mbinu ya TDD. TDD inasimamia Maendeleo ya Kuendeshwa kwa Mtihani. Katika mafunzo yetu yaliyofuata yamfululizo huu, tutaandika majaribio kwanza kila wakati na kukuza maoni au miundo yetu.
Sakinisha PyTest
pip install pytest
Sasa unda saraka inayoitwa majaribio ndani ya saraka ya programu na katika hiyo unda faili inayoitwa test_hello.py. Hebu tuandike jaribio letu la kwanza la kitengo ili kujaribu mtazamo wetu.
Nakili kijisehemu cha msimbo kifuatacho na ukibandike kwenye 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
Tumia amri iliyo hapa chini ya pytest kutekeleza vipimo. PyTest hukusanya Majaribio kiotomatiki na kuonyesha matokeo kwenye matokeo ya kawaida.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Unda Mtiririko wa Kazi wa GitHub
Tunatumia Vitendo vya Git kuunda mtiririko wa CI/CD kwa sampuli ya programu yetu. Fuata hatua zilizotajwa hapa chini za mradi wako.
Hatua ya 1: Nenda kwenye ukurasa wa hazina kwenye GitHub. Bofya kwenye Vitendo vya Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Hatua ya 2: Sogeza chini kwenye ukurasa na upate kiolezo kilichopo cha mtiririko wa kazi cha kifurushi cha Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Hatua ya 3: Sanidi Mtiririko wa Kifurushi cha Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Hatua ya 4: Mara tu usanidi wa mtiririko wa kazi wa python-package.yml unapofunguliwa, usasishe kulingana na yaml ya ziada uliyopewa. thamani za lebo.
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
Tunataka kujaribu programu yetu ya Flask kwenye usambazaji wa hivi punde wa Ubuntu Linux. Mbali na Mfumo wa Uendeshaji, tunataka kufanya majaribio yetu kwa kutumia Python 3.7 na Python 3.8 pekee.
Hatua ya 5: Tekeleza python-package.yml na thamani zilizosasishwa.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Hatua ya 6: Ahadi katika ukurasa uliopita inatupeleka kwenye GitActionsajira.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Hatua ya 7: [Si lazima]
Kwenye ukurasa wa Ajira wa Github kwa mfano wa programu ya mafunzo, tunaweza kuunda beji na mahali. kwenye faili ya README.md kwa ajili ya kuonyesha hali ya muundo.
Sasa, wakati wowote mabadiliko yanapowekwa kwa tawi kuu, Git Workflow, kama ilivyoandikwa katika python-package.yml itafuatwa na kuendeshwa kwenye Git Actions. .
Hitimisho
Katika somo hili, tumeshughulikia dhana zote msingi kutoka kwa sharti hadi kusanidi utendakazi wa CI/CD kwa programu ya wavuti iliyotengenezwa kwa kutumia Flask - Mfumo wa ukuzaji wa wavuti unaotegemea Python.
Mafunzo haya yanashughulikia hatua zote muhimu kama vile kusakinisha Python, kupakua & kusakinisha Flask, kufanya kazi na Flask-Appbuilder, kupima na PyTest, n.k. ili kuanza na ukuzaji wa wavuti kwa kutumia Python. Jumuiya ya ukuzaji wa wavuti kwa kawaida hulinganisha Flask na mfumo mwingine maarufu wa ukuzaji wa wavuti wa Python unaoitwa Django.
Tutaeleza tofauti hizi na pia tutalinganisha mifumo hii katika mojawapo ya mafunzo katika mfululizo huu.