> Casharrada #5: Qaabka Naqshadaynta Falashka iyo Hababka ugu Fiican ee Codsiyada Mareegta
> Casharrada #6: Casharka API Flask
Tababarka hordhaca ah ee Python Flask wuxuu sharxayaa waxa ay tahay Flask, rakibida Python, Virtualenv, Flask Hello World tusaale ahaan qayb ka mid ah tusaalooyinka koodka, qaladka, iyo tijaabinta: >
> Horumarka shabakada Farshaxan ka badan xirfad. Waxay u baahan tahay dulqaad iyo dadaal, oo ay weheliso dulqaad, geesinimo, iyo dadaal si loo abuuro waxa lagama maarmaanka u ah si ay u noqoto guul dhab ah. Maalmahan, waxaa lama huraan u ah ardaydu in ay sida ugu dhaqsaha badan u dardargeliyaan.Waxaan u samaynay casharkan Python Flask si ay ardaydu u dardargeliyaan oo ay u hirgeliyaan barnaamijyo fudud iyo sidoo kale kakan webka iyadoo la isticmaalayo Python 3 . rakibidda Python, Virtualenv, iyo xirmooyinka kale ee muhiimka ah. Taxanaha casharrada, waxaan sidoo kale ku rakibi doonaa Flask oo ay la socdaan pluginsyada kale ee lagama maarmaanka ah. Waxa kale oo aanu ku darnay qayb ku saabsan qaladka koodka, tijaabinta, iyo is dhexgalka joogtada ah anagoo adeegsanayna Git Actions Casharka – Horudhaca Flask ee Bilowga
> Casharka #2:Qaabka Flask, Form, View, and Redirect with Tusaalooyinka> Tutorial #3:Xakamaynta Xogta Falaaska - Sida Loo Isticmaalo Falaska Xogta Xogta leh> Casharrada # 4:Qaabka Mashruuca Flask and Flask Layout oo leh Blueprint &Talaabada 1: Ku rakib Python> 3> Hubi inaad rakibtay Python 3 iyo in kale. Haddaysan ahayn, ka soo deji Python 3 halkan oo ku rakib sida uu qabo nidaamka hawlgalkaaga Hoosta amarka.python3 -m venv venv
Isticmaal amarka hoose si aad u dhaqaajiso deegaanka Python-ka ah
source venv/bin/activate
Waxaan hoos ku siinay tusaale ah hawlgelinta iyo demin-gelinta jawiga farsamada.
>
pip install wheel
Tallaabada 3: Soodejinta Flask And Insall >
>Waxaan u baahanahay inaan samayno talaabooyinka soo dejinta Flask iyo Ku rakib Flask adigoo isticmaalaya tillaabooyinka hoos ku xusan.Hadda rakib Flask.
pip install flask
Qaar naga mid ah ayaa jecel inay la shaqeeyaan isbeddellada koodhka isha ee ugu dambeeyay. Waxaan u adeegsan karnaa amarka hoose si aan ugu rakibno isbeddelada ugu dambeeyay ee ilaha Flask.
Samee hagaha ku meel gaadhka ah.
mkdir tmp
Hadda ka soo deji Flask kaydka Github. Waxaad u baahan tahay inaad ku xidhnaato intarneedka si uu amarka hoose u shaqeeyo.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Fiiri soo saarida console-ka si aad u hubiso rakibida guulaystay. Hadda hubi haddii aan geli karno amarrada Flask.
flask --help
Waxaa laga yaabaa inaad aragto waxyaabo ka reeban oo ku saabsan maqnaanshaha falaaskacodsi. Si kastaba ha ahaatee, iska daa kuwaan maadaama aynaan abuurin wax app Flask ah. Abkayagu waa tusaale Flask, kaas oo ku duuban qaab dhismeedka shabakadda Werkzeug iyo matoorka qaabaynta Jinja.
Werkzeug >
Werkzeug waa qalab WSGI ah. WSGI waa kaliya heshiis wicitaan oo loogu talagalay adeegayaasha webka si ay ugu gudbiyaan codsiyada webka codsiyada webka ee ku qoran luuqada barnaamijka Python.
> Jinja>> xirfadaha lagama maarmaanka u ah horumarinta webka. Jinja waa mishiin qaabaysan oo si buuxda u sifaysan oo caan ah oo loogu talagalay Python. Waa luuqad aad u cad oo bixisa qalab adag oo lagu jaangooyo qorayaasha.Tallaabada 4: Ku rakib MongoDB
Raac tillaabooyinka hoos ku xusan si aad u rakibto MongoDB. Waxaan soo bandhignay tillaabooyinka lagu rakibo Debian Linux ku salaysan. Haddii aad isticmaalayso nidaam hawleed kale, dabadeed geli isku xidhka oo ku rakib sida ku qoran nidaamka hawlgalka loogu talo galay.
Ku rakib gnupg si aad u soo dejiso MongoDB furaha GPG ee dadweynaha
sudo apt-get install gnupg
1>Hadda soo deji furaha adiga oo isticmaalaya amarka hoose.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Samee faylka liiska ilaha sida ku cad qaybinta Linux. Waxaan ku darnay liiska ilaha sida ku cad 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
Run update order >
sudo apt-get update
Hadda rakib MongoDB, addoo isticmaalaya amarka hoose.
sudo apt-get install -y mongodb-org
Marka rakibiddu guulaysato, billow MongoDB adoo isticmaalaya amarka hooseHoos.
sudo systemctl status mongod
>Hadda hubi in mongod uu si toos ah u bilaabo nidaamka reboot-ka adiga oo soo saaraya amarka hoos ku qoran. >
sudo systemctl enable mongod
>Hadda hubi haddii aad awooddo. ku xidh serverka MongoDB addoo isticmaalaya macmiilka mongo. >
mongo
Xafiiska mongo, isku day isticmaalka caawimada oo tus amarrada dbs
Abuur Flask App
> 1>Isticmaal amarka hoose si aad ugu rakibto flask-appbuilder and mongoengine.pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Samee app qalfoofka oo leh qiyamka lagu muujiyay sida faallooyinka qaybta hoose ee koodka.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Waxaan arki doonaa wax soo saarka la mid ah kan hoose.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
U fiirso qaabka mashruuca iyo abka. Waxaan muujinay wax soo saarka amarka geedka hoose. >
>![](/wp-content/uploads/guides/iae5sr2a76-2.png)
Aan eegno faylka qaabeynta Flask. Waa habayn habaysan oo loo sameeyay natiijada amarkii u dambeeyay. Mawduuca Cyborg , sida hoos ku cad.
# 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
Si aad u socodsiiso app-ka qalfoofka, adeegso amarka hoose ee terminalka.
flask run
Flask Hello World
Si aad u abuurto barnaamijkaagii ugu horreeyay ee flaskTutorialApp, ka fur file views.py hoos hagaha abka oo ku dar koodka soo socda. Raadi bayaannada soo dejinta ee lagu bixiyay faylka Ku dar weedhahan haddaanay horayba u jirin.
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())
Keydi faylka ka dib markaad ku darto koodka isha sare. Tag tusaha xididka mashruuca oo adeegso amarka hoose si aad u socodsiiso server-ka horumarinta Flask.
flask run
Hadda u gudub //localhost:5000/hello/ si aad u aragto wax soo saarka gudahabrowserka.
Debugging
Hadda, seerfarka horumarku kuma socdo habka Debug. Haddi aan la debuging mode, way adagtahay in la helo khaladaadka ku jira koodhka isha ee Codsiga Flask.
Debug Mode in Flask results in the following:
- Qaabka wax-ka-saarku wuxuu hawlgeliyaa dib-u-dejiyaha tooska ah. Waxay ka dhigan tahay inaan u baahnayn dib-u-kicinta server-ka horumarinta ka dib markii aan isbeddel ku sameynay koodhka isha ee codsiga.
- Qaabka wax ka-saarku wuxuu kiciyaa Python debugger. Waxaan baari karnaa qiyamka doorsoomayaasha inta lagu jiro ka Reebka.
- Qaabka wax ka-saarku wuxuu sahlayaa qaladka codsiga Flask. Waxaan ku hubin karnaa qiyamka doorsoomayaasha kala duwan ee fadhiyada qaladka >>
Jooji server-ka horumarinta haddii uu horeba u shaqaynayay. Waxaad isticmaali kartaa CTRL + C ama Keyboard-ka joojin si aad sidaas oo kale u sameyso.
Isticmaal koodkan soo socda si aad awood ugu siiso habka debug-ga oo u socodsii server-ka si ku meel gaar ah.
FLASK_ENV=development flask run
Raadi Console loogu talagalay Debugger PIN oo qoraal u samee.
Hadda aynu ku beddelno aragtida HelloWorld ee kor ku qoran oo leh sadarrada soo socota ee godadka koodka. Ogaysii inaan soo bandhignay wax ka reeban caadada.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
U soco //localhost:5000/hello/, oo waxaad arki doontaa in arjiga uu kor u qaaday ka reebis. Barrawsarku waxa uu soo bandhigayaa raad-raacyada, sida hoos ku cad.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Intaa dheer, eeg console-ka uu ku shaqaynayo serfarka horumarinta. Waxaad ogaan doontaa in markan, theisbeddellada ku yimaadda views.py si toos ah ayaa loo ogaadaa, oo server-ka cilladaha ayaa dib u bilaaba laftiisa. Hadda uma baahnid inaan gacanta dib u billowno.
Konsole-ku wuxuu yeelan doonaa khadadka, sida hoos ku cad. Waxaan u baahannahay inaan hoos u dhigno PIN-ka Debug-ka dambe.
* 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
Hadda hubi raadka raafka ee browserka oo aad xariiqda ugu dambeysa. Guji si aad u balaadhiso aragtideeda oo taabo calaamada CLI si aad qolofka ugu furto hab is-dhexgal
>![](/wp-content/uploads/guides/iae5sr2a76-4.png)
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Marka aan horay u sii wadno ka dib markii aan siino PIN-ka Debug-ka, waxaan geli karnaa qolofka is-dhexgalka. wuxuu baari karaa qiyamka doorsoomayaasha si loo helo sababta ka reeban oo uu u maareeyo khaladka si ka wanaagsan. Fadlan fiiri mid ka mid ah tusaalooyinka ka muuqda sawirka hoose.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Hadda beddel koodka aragtida.py, sida hoos ka muuqata. Ogsoonow in aan ka faalloonnay khadkii lahaa ka reebanaanshaha.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Tijaabinta Codsiga Falaaska
Hadda aan qorno imtixaankeenna ugu horreeya ee codsiga Flask-ka ee aannu horumarinayno. Marka hore, rakib PyTest. PyTest waa qaab tijaabo ah. Waxay naga caawinaysaa inaan qorno kood ka sii wanaagsan.
Waxaa intaa dheer, sababtoo ah waxaan qori karnaa imtixaannada cutubka marka la horumarinayo codsiyadayada, waxaa suurtagal ah in la raaco habka TDD. TDD waxay u taagan tahay Horumarka Tijaabada Waday. Casharradayada danbe eeTaxanahan, waa in aan marka hore qori doonaa imtixaanada oo aan horumarino aragtideena ama moodooyinkayaga.
Ku rakib PyTest
pip install pytest
Hadda samee tusaha la yidhaa tests gudaha tusaha abka iyo taas samee fayl la yiraahdo test_hello.py. Aynu qorno tijaabada cutubkayaga ugu horreeya si aan u tijaabino aragtidayada.
>Koobi jeex code-kan soo socda oo ku dheji 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
Isticmaal amarka hoose ee pytest si aad u socodsiiso imtixaanada. PyTest waxay si toos ah u ururisaa imtixaanada waxayna soo bandhigtaa natiijooyinka wax soo saarka caadiga ah.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Abuur A GitHub Workflow
Waxaan isticmaalnaa Git Actions si aan u abuurno socodka shaqada CI/CD ee codsigayaga muunada ah. Raac tillaabooyinka hoos ku xusan ee mashruucaaga.
Tallaabada 1: U gudub bogga kaydka ee GitHub. Guji Git Actions >>>> Tallaabada 3: Dejinta xirmada Python Workflow Work.
>![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Tallaabada 4: Marka python-package.yml qaabaynta socodka shaqadu furmo, cusboonaysii iyada oo ku saleysan yamlka dheeriga ah ee la siiyay qiimaha 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
Waxaan rabnaa in aan tijaabino codsigayaga Flask qaybinta Ubuntu Linux ee ugu dambeysay. Marka lagu daro OS-ka, waxaan rabnaa in aan ku wadno imtixaanadayada anagoo adeegsanayna Python 3.7 iyo Python 3.8
Tallaabada 6: Ballanqaadka boggii hore wuxuu ina geynayaa GitActions
>![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Tallaabada 7: [Ikhtiyaar]
> Bogga Github Jobs ee muunadda tababbarka abka, waxaan samayn karnaa calaamad iyo meel waxay ku jirtaa faylka README.md si ay u muujiso heerka dhismaha.Hadda, mar kasta oo isbeddeladu ay ka go'an tahay laanta sare, Git Workflow, sida ku qoran python-package.yml waa la raaci doonaa oo lagu socon doonaa Git Actions .
7> Gabagabo > Casharradan, waxaan ku soo koobnay dhammaan fikradaha aasaasiga ah laga soo bilaabo shuruudaha ilaa dejinta CI/CD socodka shaqada ee codsiga shabakadda ee la sameeyay iyadoo la adeegsanayo Flask - Qaabka horumarinta webka ee ku saleysan Python.Tababarkaan wuxuu daboolayaa dhammaan tillaabooyinka lagama maarmaanka ah sida rakibida Python, soo dejinta & rakibidda Flask, la shaqaynta Flask-Appbuilder, tijaabinta PyTest, iwm. si aad u bilowdo horumarinta shabakada adoo isticmaalaya Python. Bulshada horumarinta webka waxay inta badan barbar dhigtaa Flask iyo qaabka kale ee horumarinta mareegaha Python ee caanka ah ee loo yaqaan Django.