№5 оқулық: Колбаны жобалау үлгілері және веб-қосымшаларға арналған үздік тәжірибелер
№6 оқулық: Flask API оқулығы мысалы
Бұл кіріспе Python Flask оқулығы Flask деген не екенін түсіндіреді, Python орнату, Virtualenv, Flask Hello World мысалында код мысалдары, отладтау және тестілеу бөлімі бар:
Веб-сайтты әзірлеу шеберліктен гөрі өнер. Нағыз жетістікке жету үшін қажетті нәрсені жасау үшін табандылық, батылдық және берілгендікпен қатар шыдамдылық пен еңбекқорлықты қажет етеді. Бұл күндері үйренушілерге тезірек жылдамдыққа жету өте маңызды.
Біз бұл Python Flask оқулығын студенттерге жылдамдықты арттыру және Python 3 көмегімен қарапайым және күрделі веб-бағдарламалауды жүзеге асыру үшін жасадық. .
Бұл Python Flask оқулығы колбаны бастаушыға арналған оқулыққа ұқсайды, ол Python, Virtualenv және басқа маңызды пакеттерді орнату. Осы оқулықтар сериясында біз Flask-ті басқа қажетті Flask плагиндерімен бірге орнатамыз. Біз сондай-ақ Git әрекеттері арқылы кодты жөндеу, тестілеу және үздіксіз интеграциялау бөлімін қостық.
Осы колба сериясындағы оқулықтар тізімі
Оқулық №1: Python Flask Оқулық – Жаңадан бастаушыларға арналған колбаға кіріспе
Оқулық №2: Колба үлгісі, пішіні, көрінісі және мысалдарымен қайта бағыттауы
Оқулық №3: Колба дерекқорын өңдеу – Дерекқормен колбаны қалай пайдалану керек
Оқулық №4: Қолба қолданбасы мен колба жобасының схемасы &алғышарттардағы аталған қадамдар.
1-қадам: Python орнату
Python 3 орнатылғанын немесе орнатылмағанын тексеріңіз. Олай болмаса, Python 3 нұсқасын осы жерден жүктеп алып, оны операциялық жүйеңізге сәйкес орнатыңыз.
2-қадам: Python виртуалды ортасын жасаңыз
Пайдалану арқылы виртуалды орта жасаңыз. төмендегі пәрмен.
python3 -m venv venv
Python виртуалды ортасын белсендіру үшін төмендегі пәрменді пайдаланыңыз.
source venv/bin/activate
Біз төменде виртуалды ортаны белсендіру және өшіру мысалын келтірдік.
Осы оқулықтағы барлық келесі пәрмендер белсендірілген виртуалды ортада іске қосылуы керек. Виртуалды ортада дөңгелектерді құрастыруымыз үшін доңғалақ бумасын орнатыңыз.
pip install wheel
3-қадам: Колбаны жүктеп алу және орнату
Біз Flask жүктеп алу қадамдарын орындауымыз керек және Төменде аталған қадамдарды пайдаланып Flask орнатыңыз.
Енді Flask орнатыңыз.
pip install flask
Кейбіреулеріміз бастапқы кодтың соңғы өзгерістерімен бірге жұмыс істегенді ұнатады. Біз төменде берілген пәрменді Flask көздеріне соңғы өзгертулермен орнату үшін пайдалана аламыз.
Уақытша каталог жасаңыз.
mkdir tmp
Енді Github репозиторийінен Flask орнатыңыз. Төмендегі пәрмен жұмыс істеуі үшін интернетке қосылып тұруыңыз керек.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Орнатудың сәтті өткенін тексеру үшін консоль шығыстарын қараңыз. Енді Flask пәрмендеріне қол жеткізе алатынымызды тексеріңіз.
flask --help
Фласктің жоқтығына қатысты кейбір ерекшеліктерді көруіңіз мүмкін.қолдану. Дегенмен, оларды елемеңіз, өйткені біз ешқандай Flask қолданбасын жасамағанбыз. Біздің қолданба - Werkzeug веб-қаңқасы мен Jinja үлгілеу механизміндегі орауыш болып табылатын Flask данасы.
Werkzeug
Werkzeug - WSGI құралдар жинағы. WSGI — тек қана веб-сұрауларды Python бағдарламалау тілінде жазылған веб-қосымшаларға жіберу үшін веб-серверлерге арналған шақыру шарты.
Jinja
Үлгілеу - бұл веб-әзірлеушілердің маңызды дағдылар жиынтығы. Jinja - бұл Python үшін толыққанды және танымал шаблондық қозғалтқыш. Бұл өте мәнерлі тіл және үлгі авторлары үшін сенімді құралдар жинағын қамтамасыз етеді.
4-қадам: MongoDB орнату
MongoDB орнату үшін төменде көрсетілген қадамдарды орындаңыз. Біз оны Debian негізіндегі Linux жүйесінде орнату қадамдарын сипаттадық. Басқа амалдық жүйені пайдаланып жатсаңыз, сілтемеге кіріп, жоспарланған амалдық жүйеге сәйкес орнатыңыз.
MongoDB жалпы GPG кілтін импорттау үшін gnupg орнатыңыз.
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
Енді мүмкіндігіңіз бар-жоғын тексеріңіз. mongo клиентін пайдаланып MongoDB серверіне қосылыңыз.
mongo
Mongo қабықшасында анықтаманы пайдаланып көріңіз және dbs пәрмендерін көрсетіңіз.
Flask қолданбасын жасау
Flask-appbuilder және mongoengine орнату үшін төмендегі пәрменді пайдаланыңыз.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Төмендегі код үзіндісінде түсініктеме ретінде көрсетілген мәндермен скелет қолданбасын жасаңыз.
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!
Жоба мен қолданбаның орналасуын қараңыз. Біз төменде ағаш командасының нәтижесін көрсеттік.
Фласк конфигурация файлын қарастырайық. Бұл соңғы пәрменнің нәтижесі ретінде жасалған әдепкі конфигурация. Төменде көрсетілгендей Cyborg тақырыбын түсіндірмеңіз.
# 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
Skelet қолданбасын іске қосу үшін терминалда төменде берілген пәрменді пайдаланыңыз.
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/ бетіне өтіңіз.шолғыш.
Түзету
Қазіргі уақытта әзірлеу сервері Debug режимінде жұмыс істемейді. Түзету режимінсіз, Flask қолданбасының бастапқы кодындағы қателерді табу қиын.
Фласктегі жөндеу режимі келесі нәтижелерге әкеледі:
- Түзету режимі Автоматты қайта жүктеуді іске қосады. Бұл қолданбаның бастапқы кодына өзгертулер енгізгеннен кейін әзірлеу серверін қайта іске қосудың қажеті жоқ дегенді білдіреді.
- Түзету режимі Python жөндеу құралын белсендіреді. Ерекшелік кезінде айнымалы мәндерді тексере аламыз.
- Отластыру режимі Flask қолданбасының жөндеуін қосады. Түзету сеанстарында әртүрлі айнымалы мәндердің мәндерін тексере аламыз.
Егер ол әлдеқашан жұмыс істеп тұрса, әзірлеу серверін тоқтатыңыз. Дәл осы әрекетті орындау үшін CTRL + C немесе Пернетақта үзілісін пайдалануға болады.
Төменгі кодты жөндеу режимін қосу және әзірлеу серверін уақытша іске қосу үшін пайдаланыңыз.
FLASK_ENV=development flask run
Іздеу Debugger 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 кодын беріңіз және "Жарайды" түймесін басыңыз.
![](/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 қолданбасын сынау
Енді біз әзірлеп жатқан Flask қолданбасы үшін бірінші тестімізді жазайық. Алдымен PyTest орнатыңыз. PyTest – тестілеу жүйесі. Бұл бізге кодты жақсырақ жазуға көмектеседі.
Сонымен қатар, қолданбаларды әзірлеу кезінде бірлік сынақтарын жаза алатындықтан, TDD әдісін қолдануға болады. TDD «Тестке негізделген даму» дегенді білдіреді. Біздің келесі оқулықтарымыздабұл серияда біз әрқашан алдымен сынақтарды жазып, өз көзқарастарымызды немесе үлгілерімізді дамытамыз.
PyTest орнату
pip install pytest
Енді қолданбалар каталогында және сол жерде tests деп аталатын каталогты жасаңыз. 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 жұмыс процесін жасау
Біз үлгі қолданбамыз үшін CI/CD жұмыс процесін жасау үшін Git әрекеттерін қолданамыз. Жобаңыз үшін төменде көрсетілген қадамдарды орындаңыз.
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-қадам: Алдыңғы беттегі міндеттеме бізді GitActions қызметіне апарадытапсырмалар.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
7-қадам: [Қосымша]
Үлгі оқулық қолданбасы үшін Github Jobs бетінде біз танымбелгі мен орынды жасай аламыз. оны құрастыру күйін көрсету үшін README.md файлында.
Енді өзгертулер негізгі тармаққа бекітілген сайын, python-package.yml файлында жазылған Git жұмыс процесі орындалады және Git әрекеттерінде орындалады. .
Қорытынды
Бұл оқулықта біз Flask – Python негізіндегі веб-әзірлеу құрылымы арқылы әзірленген веб-бағдарлама үшін алғышарттардан бастап CI/CD жұмыс процесін орнатуға дейінгі барлық негізгі түсініктерді қарастырдық.
Бұл оқулық Python орнату, жүктеп алу және жүктеп алу сияқты барлық қажетті қадамдарды қамтиды; Python көмегімен веб-әзірлеуді бастау үшін Flask орнату, Flask-Appbuilder бағдарламасымен жұмыс істеу, PyTest арқылы тестілеу және т.б.. Веб-әзірлеу қауымдастығы әдетте Flask-ті Django деп аталатын басқа танымал Python веб-әзірлеу құрылымымен салыстырады.
Біз бұл айырмашылықтарды түсіндіреміз және осы сериядағы оқулықтардың бірінде бұл жақтауларды салыстырамыз.