Ձեռնարկ #5. Flask Design Patterns and Best Practices for Web Applications
Tutorial #6: Flask API Tutorial with Example
Այս ներածական Python Flask ձեռնարկը բացատրում է, թե ինչ է Flask-ը, Python-ի տեղադրումը, Virtualenv-ը, Flask Hello World օրինակը կոդերի օրինակների, վրիպազերծման և փորձարկման բաժնի հետ.
Վեբկայքի մշակումը ավելի շատ արվեստ, քան հմտություն: Այն պահանջում է համբերություն և ջանասիրություն, ինչպես նաև հաստատակամություն, քաջություն և նվիրվածություն՝ ստեղծելու այն, ինչ անհրաժեշտ է իրական հաջողության համար: Այս օրերին շատ կարևոր է, որ սովորողները հնարավորինս արագ հասնեն արագությանը:
Մենք ստեղծել ենք այս Python Flask ձեռնարկը, որպեսզի ուսանողները կարողանան արագացնել և իրականացնել պարզ, ինչպես նաև բարդ վեբ ծրագրավորում Python 3-ի միջոցով: .
Այս Python Flask ձեռնարկը ավելի շատ նման է կոլբայի սկսնակների ձեռնարկին, որը կներառի Python-ի, Virtualenv-ի և այլ կարևոր փաթեթների տեղադրում: Այս ձեռնարկների շարքում մենք նաև կտեղադրենք Flask-ը մյուս անհրաժեշտ Flask հավելվածների հետ միասին: Մենք նաև ներառել ենք կոդերի վրիպազերծման, փորձարկման և Git Actions-ի միջոցով շարունակական ինտեգրման մասին բաժին:
Այս Flask Series ձեռնարկների ցանկը
Ձեռնարկ #1: Python Flask Ձեռնարկ – ներածություն Flask-ին սկսնակների համար
Ձեռնարկ #2: Flask կաղապար, ձև, դիտում և վերահղում օրինակներով
Ձեռնարկ #3: Flask Database Handling – Ինչպես օգտագործել Flask With A Database
Tutorial #4. Flask App and Flask Project Layout With Blueprint &նախադրյալներում նշված քայլերը:
Քայլ 1. Տեղադրեք Python
Ստուգեք՝ տեղադրել եք արդյոք Python 3-ը, թե ոչ: Եթե ոչ, ապա ներբեռնեք Python 3-ը այստեղից և տեղադրեք այն ըստ ձեր Օպերացիոն համակարգի:
Քայլ 2. Ստեղծեք Python վիրտուալ միջավայր
Ստեղծեք վիրտուալ միջավայր՝ օգտագործելով ստորև հրամանը։
python3 -m venv venv
Օգտագործեք ստորև նշված հրամանը՝ Python վիրտուալ միջավայրն ակտիվացնելու համար։
source venv/bin/activate
Վիրտուալ միջավայրի ակտիվացման և ապաակտիվացման օրինակ ենք տվել ստորև։
Այս ձեռնարկի բոլոր հաջորդ հրամանները պետք է գործարկվեն ակտիվացված վիրտուալ միջավայրում: Տեղադրեք անիվների փաթեթը, որպեսզի մենք կարողանանք անիվներ կառուցել վիրտուալ միջավայրի ներսում:
pip install wheel
Քայլ 3. Flask Ներբեռնում և Տեղադրում
Մենք պետք է կատարենք Flask ներբեռնման քայլերը և տեղադրեք Flask-ը` օգտագործելով ստորև նշված քայլերը:
Այժմ տեղադրեք Flask-ը:
pip install flask
Մեզանից ոմանք սիրում են աշխատել սկզբնական կոդի վերջին փոփոխություններով: Մենք կարող ենք օգտագործել ստորև տրված հրամանը՝ Flask-ի աղբյուրների վերջին փոփոխություններով տեղադրելու համար:
Ստեղծեք ժամանակավոր գրացուցակ:
mkdir tmp
Այժմ տեղադրեք Flask-ը Github պահոցից: Դուք պետք է միացված մնաք ինտերնետին, որպեսզի ստորև նշված հրամանն աշխատի:
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Նայեք վահանակի ելքերը՝ հաջող տեղադրումը ստուգելու համար: Այժմ ստուգեք, արդյոք մենք կարող ենք մուտք գործել Flask հրամաններ:
flask --help
Դուք կարող եք տեսնել որոշ բացառություններ Flask-ի բացակայության վերաբերյալ:դիմումը. Այնուամենայնիվ, անտեսեք դրանք, քանի որ մենք չենք ստեղծել Flask հավելված: Մեր հավելվածը Flask-ի օրինակ է, որը հանդիսանում է Werkzeug վեբ շրջանակի և Jinja ձևանմուշների շարժիչի փաթաթան:
Werkzeug
Werkzeug-ը WSGI գործիքակազմ է: WSGI-ն վեբ սերվերների համար ընդամենը կանչող կոնվենցիա է՝ վեբ հարցումները փոխանցելու Python ծրագրավորման լեզվով գրված վեբ հավելվածներին:
Jinja
Կաղապարը վեբ մշակողների հիմնական հմտությունները: Jinja-ն Python-ի համար լիովին հագեցած և հանրաճանաչ կաղապարային շարժիչ է: Այն բավականին արտահայտիչ լեզու է և ապահովում է կաղապարի հեղինակներին գործիքների մի շարք:
Քայլ 4. Տեղադրեք MongoDB
Հետևեք ստորև նշված քայլերին MongoDB տեղադրելու համար: Մենք նախանշել ենք այն Debian-ի վրա հիմնված Linux-ում տեղադրելու քայլերը: Եթե դուք այլ օպերացիոն համակարգ եք օգտագործում, ապա մուտք գործեք հղումը և տեղադրեք ըստ նախատեսված օպերացիոն համակարգի:
Տեղադրեք gnupg MongoDB հանրային GPG բանալին ներմուծելու համար:
sudo apt-get install gnupg
Այժմ ներմուծեք բանալին՝ օգտագործելով ստորև նշված հրամանը:
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Ստեղծեք աղբյուրների ցանկի ֆայլը ըստ ձեր Linux բաշխման: Մենք ավելացրել ենք աղբյուրների ցանկը ըստ 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
Գործարկել թարմացման հրամանը
sudo apt-get update
Այժմ տեղադրեք MongoDB-ն՝ օգտագործելով ստորև նշված հրամանը:
sudo apt-get install -y mongodb-org
Հենց տեղադրումը հաջող լինի, գործարկեք MongoDB-ն՝ օգտագործելով ստորև նշված հրամանը:
sudo systemctl start mongod
Ստուգեք MongoDB-ի կարգավիճակը՝ օգտագործելով հրամանը:ներքևում:
sudo systemctl status mongod
Այժմ համոզվեք, որ mongod-ը ավտոմատ կերպով սկսվում է համակարգի վերագործարկման ժամանակ՝ տալով ստորև ներկայացված հրամանը:
sudo systemctl enable mongod
Այժմ ստուգեք, արդյոք կարող եք միացեք MongoDB սերվերին՝ օգտագործելով mongo հաճախորդը:
mongo
Mongo shell-ում փորձեք օգտագործել օգնությունը և ցույց տալ dbs հրամանները:
Ստեղծեք Flask հավելված
Օգտագործեք ստորև նշված հրամանը՝ flask-appbuilder-ը և mongoengine-ը տեղադրելու համար:
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Ստեղծեք skeleton հավելված՝ ստորև նշված կոդի հատվածում որպես մեկնաբանություններ ցուցադրված արժեքներով:
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Մենք կտեսնենք ստորև տրվածի նման արդյունքը:
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Նայեք նախագծի և հավելվածի դասավորությանը: Մենք ցույց ենք տվել ծառի հրամանի արդյունքը ստորև:
Եկեք նայենք Flask կազմաձևման ֆայլին: Դա լռելյայն կազմաձև է, որը ստեղծվել է վերջին հրամանի արդյունքում: Մեկնաբանել Կիբորգ թեման, ինչպես ցույց է տրված ստորև:
# 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
Կմախքի հավելվածը գործարկելու համար օգտագործեք ստորև տրված հրամանը տերմինալի վրա:
flask run
Flask Hello World
Ձեր առաջին ծրագիրը flaskTutorialApp-ում ստեղծելու համար բացեք views.py ֆայլը հավելվածի գրացուցակի տակ և ավելացրեք հետևյալ կոդը: Փնտրեք ներմուծման հայտարարությունները, որոնք տրված են ֆայլում: Ավելացրեք այս հայտարարությունները, եթե արդեն չկան:
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())
Պահպանեք ֆայլը վերը նշված սկզբնական կոդը ավելացնելուց հետո: Գնացեք ծրագրի արմատական գրացուցակ և օգտագործեք ստորև նշված հրամանը՝ Flask-ի զարգացման սերվերը գործարկելու համար:
flask run
Այժմ անցեք //localhost:5000/hello/՝ արդյունքը տեսնելու համար:զննարկիչը:
Վրիպազերծում
Ներկայումս մշակման սերվերը չի աշխատում Վրիպազերծման ռեժիմում: Առանց վրիպազերծման ռեժիմի, դժվար է գտնել Flask հավելվածի սկզբնաղբյուրի սխալները:
Վրիպազերծման ռեժիմը Flask-ում հանգեցնում է հետևյալին.
- Վրիպազերծման ռեժիմը ակտիվացնում է Ավտոմատ վերաբեռնիչը: Դա նշանակում է, որ մենք չպետք է վերագործարկենք մշակման սերվերը հավելվածի սկզբնական կոդում փոփոխություններ կատարելուց հետո:
- Վրիպազերծման ռեժիմը ակտիվացնում է Python կարգաբերիչը: Բացառության ժամանակ մենք կարող ենք ստուգել փոփոխականների արժեքները:
- Վրիպազերծման ռեժիմը հնարավորություն է տալիս Flask հավելվածի վրիպազերծումը: Մենք կարող ենք ստուգել տարբեր փոփոխականների արժեքները վրիպազերծման նստաշրջաններում:
Կանգնեցնել զարգացման սերվերը, եթե այն արդեն աշխատում է: Նույնն անելու համար կարող եք օգտագործել CTRL + C կամ Ստեղնաշարի ընդհատումը:
Օգտագործեք հետևյալ կոդը՝ վրիպազերծման ռեժիմը միացնելու և մշակման սերվերը ժամանակավորապես գործարկելու համար:
FLASK_ENV=development flask run
Որոնում Վրիպազերծիչի PIN-ի վահանակը և նշեք այն:
Այժմ եկեք փոխենք վերը գրված HelloWorld տեսքը կոդի հատվածի հետևյալ տողերով: Ուշադրություն դարձրեք, որ մենք ներկայացրել ենք հատուկ բացառություն:
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Նավարկեք դեպի //localhost:5000/hello/ և կտեսնեք, որ հավելվածը բացառություն է առաջացրել: Բրաուզերը ցուցադրում է ստեկի հետքը, ինչպես ցույց է տրված ստորև:
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Այնուհետև, նայեք այն վահանակին, որտեղ աշխատում է մշակման սերվերը: Դուք կգտնեք, որ այս անգամ,views.py-ում փոփոխություններն ինքնաբերաբար հայտնաբերվում են, և վրիպազերծման սերվերն ինքնին կվերագործարկվի: Այժմ մենք պետք չէ այն ձեռքով վերագործարկել:
Վահանակը կունենա տողեր, ինչպես ցույց է տրված ստորև: Մենք պետք է նշենք Վրիպազերծման PIN-ը ավելի ուշ:
* 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
Այժմ ստուգեք բրաուզերում կուտակված հետքը և անցեք վերջին տող: Կտտացրեք դրա վրա՝ իր տեսքը ընդլայնելու համար և սեղմեք CLI պատկերակի վրա՝ կեղևը ինտերակտիվ ռեժիմում բացելու համար:
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Հենց որ բացեք այն, կտեսնեք, որ զննարկիչը կցուցադրի Debug PIN-ի հուշում: Տվեք Վրիպազերծման PIN-ը և սեղմեք OK:
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Վրիպազերծման PIN-ը տալուց հետո առաջ անցնելուց հետո մենք կարող ենք մուտք գործել ինտերակտիվ վահանակ:
Մենք մուտք ենք գործում կեղևը զննարկիչից և կարող է ստուգել փոփոխականների արժեքները՝ գտնելու Բացառության պատճառը և ավելի լավ կարգավորել սխալը: Խնդրում ենք նայեք ստորև նկարում ներկայացված օրինակներից մեկին:
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Այժմ փոխեք կոդը view.py-ում, ինչպես ցույց է տրված ստորև: Նկատի ունեցեք, որ մենք մեկնաբանել ենք այն տողը, որն ուներ բարձրացված բացառություն:
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Փորձարկում Flask Application
Այժմ եկեք գրենք մեր առաջին թեստը Flask հավելվածի համար, որը մենք մշակում ենք: Նախ, տեղադրեք PyTest-ը: PyTest-ը փորձարկման շրջանակ է: Այն օգնում է մեզ ավելի լավ կոդ գրել:
Ավելին, միայն այն պատճառով, որ մենք կարող ենք գրել միավորի թեստեր մեր հավելվածները մշակելիս, հնարավոր է հետևել TDD մոտեցմանը: TDD-ն նշանակում է Test-Driven Development: Մեր հետագա ձեռնարկներումայս շարքում մենք միշտ նախ պետք է գրենք թեստեր և զարգացնենք մեր տեսակետները կամ մոդելները:
Տեղադրեք PyTest
pip install pytest
Այժմ ստեղծեք մի գրացուցակ, որը կոչվում է թեստեր հավելվածի գրացուցակի ներսում և դրանում ստեղծել մի ֆայլ, որը կոչվում է test_hello.py: Եկեք գրենք մեր առաջին միավորի թեստը՝ մեր տեսակետը ստուգելու համար:
Պատճենեք հետևյալ կոդի հատվածը և տեղադրեք այն 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
Օգտագործեք ստորև նշված pytest հրամանը գործարկելու համար թեստերը։ PyTest-ը ավտոմատ կերպով հավաքում է թեստերը և ցուցադրում արդյունքները ստանդարտ ելքի վրա:
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Ստեղծեք GitHub աշխատանքային հոսք
Մենք օգտագործում ենք Git Actions-ը մեր նմուշի հավելվածի համար CI/CD աշխատանքային հոսք ստեղծելու համար: Հետևեք ստորև նշված քայլերին ձեր նախագծի համար:
Քայլ 1. Գնացեք GitHub-ի պահեստի էջ: Սեղմեք Git Actions-ի վրա:
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Քայլ 2. Ոլորեք ներքև էջը և գտեք գոյություն ունեցող աշխատանքային հոսքի ձևանմուշ Python փաթեթի համար:
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Քայլ 3. Կարգավորեք Python փաթեթի աշխատանքային հոսքը:
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Քայլ 4. Երբ python-package.yml աշխատանքային հոսքի կոնֆիգուրացիան բացվի, թարմացրեք այն՝ հիմնվելով տվյալ yaml-ի վրա: պիտակի արժեքները:
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
Մենք ցանկանում ենք փորձարկել մեր Flask հավելվածը Ubuntu Linux-ի վերջին բաշխման վրա: ՕՀ-ից բացի, մենք ցանկանում ենք մեր թեստերն իրականացնել միայն Python 3.7-ի և Python 3.8-ի միջոցով:
Քայլ 5. Կատարեք python-package.yml-ը թարմացված արժեքներով:
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Քայլ 6. Նախորդ էջի commit-ը մեզ տանում է դեպի GitActionsաշխատատեղեր:
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Քայլ 7. [Ըստ ցանկության]
Github Jobs էջում, օրինակելի ուսումնական հավելվածի համար, մենք կարող ենք ստեղծել կրծքանշան և տեղադրել այն README.md ֆայլում՝ կառուցման կարգավիճակը ցուցադրելու համար:
Այժմ, երբ փոփոխությունները կատարվում են հիմնական ճյուղում, Git Workflow-ը, ինչպես գրված է python-package.yml-ում, կհետևվի և կաշխատի Git Actions-ում: .
Եզրակացություն
Այս ձեռնարկում մենք լուսաբանել ենք բոլոր հիմնական հասկացությունները՝ նախապայմաններից մինչև վեբ հավելվածի համար CI/CD աշխատանքային հոսքի կարգավորում, որը մշակվել է Flask – Python-ի վրա հիմնված վեբ զարգացման շրջանակի միջոցով:
Այս ձեռնարկը ներառում է բոլոր անհրաժեշտ քայլերը, ինչպիսիք են Python-ի տեղադրումը, ներբեռնումը և amp; Flask-ի տեղադրում, Flask-Appbuilder-ի հետ աշխատել, PyTest-ի հետ փորձարկում և այլն՝ Python-ի միջոցով վեբ մշակումը սկսելու համար: Վեբ մշակման համայնքը սովորաբար համեմատում է Flask-ը մեկ այլ հայտնի Python վեբ մշակման շրջանակի հետ, որը կոչվում է Django:
Մենք կբացատրենք այս տարբերությունները և կհամեմատենք նաև այս շրջանակները այս շարքի ձեռնարկներից մեկում: