Dərslik №5: Veb Tətbiqləri üçün Flask Dizayn Nümunələri və Ən Yaxşı Təcrübələr
Dərslik №6: Nümunə ilə Flask API Təlimatı
Bu giriş Python Flask dərsliyi Flask nə olduğunu, Python, Virtualenv, Flask Hello World nümunəsinin quraşdırılmasını kod nümunələri, sazlama və sınaq bölməsi ilə izah edir:
Veb saytın hazırlanması bacarıqdan daha çox sənətdir. Həqiqi uğur əldə etmək üçün lazım olanı yaratmaq üçün əzm, cəsarət və fədakarlıqla yanaşı, səbir və çalışqanlıq tələb olunur. Bu günlərdə öyrənənlərin sürəti mümkün qədər tez əldə etmələri vacibdir.
Biz bu Python Flask dərsliyini tələbələrə sürətləndirmək və Python 3 istifadə edərək sadə, eləcə də mürəkkəb veb proqramlaşdırmanı həyata keçirmək üçün yaratdıq. .
Bu Python Flask dərsliyi daha çox yeni başlayanlar üçün flask dərsliyinə bənzəyir. Python, Virtualenv və digər vacib paketlərin quraşdırılması. Bu dərsliklər seriyasında biz Flask-ı digər zəruri Flask plaginləri ilə birlikdə quraşdıracağıq. Biz həmçinin Git Fəaliyyətlərindən istifadə edərək kodun sazlanması, sınaqdan keçirilməsi və davamlı inteqrasiya haqqında bölmə daxil etmişik.
Bu Flask Seriyasındakı Dərsliklərin Siyahısı
Təlimat №1: Python Flask Dərslik – Yeni başlayanlar üçün Flaska giriş
Dərslik №2: Flask Şablonu, Forma, Görünüş və Nümunələrlə Yönləndirmə
Təlimat №3: Flask Database Handling – Flask with A Database
Dərslik №4: Flask App and Flask Project Layout with Blueprint &ilkin şərtlərdə qeyd olunan addımlar.
Addım 1: Python-u quraşdırın
Python 3-ü quraşdırıb-qurmadığınızı yoxlayın. Əgər belə deyilsə, Python 3-ü buradan endirin və onu Əməliyyat Sisteminizə uyğun olaraq quraşdırın.
Addım 2: Python Virtual Mühiti Yaradın
Virtual mühit yaradın. aşağıdakı əmr.
python3 -m venv venv
Python virtual mühitini aktivləşdirmək üçün aşağıdakı əmrdən istifadə edin.
source venv/bin/activate
Aşağıda virtual mühitin aktivləşdirilməsi və deaktiv edilməsinə dair bir nümunə vermişik.
Bu dərslikdəki bütün sonrakı əmrlər aktivləşdirilmiş virtual mühitdə işləməlidir. Təkər paketini quraşdırın ki, virtual mühitdə təkərlər yarada bilək.
pip install wheel
Addım 3: Flask Yükləyin və Quraşdırın
Biz Flask yükləmə addımlarını yerinə yetirməliyik və Aşağıda qeyd olunan addımlardan istifadə edərək Flask quraşdırın.
İndi Flask quraşdırın.
pip install flask
Bəzilərimiz ən son mənbə kodu dəyişiklikləri ilə işləməyi xoşlayır. Flask mənbələrinə ən son dəyişiklikləri quraşdırmaq üçün aşağıda verilmiş əmrdən istifadə edə bilərik.
Müvəqqəti kataloq yaradın.
mkdir tmp
İndi Github repozitoriyasından Flask quraşdırın. Aşağıdakı əmrin işləməsi üçün internetə bağlı qalmalısınız.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Uğurlu quraşdırmanı yoxlamaq üçün konsol çıxışlarına baxın. İndi Flask əmrlərinə daxil olub-olmadığımızı yoxlayın.
flask --help
Flaskın olmaması ilə bağlı bəzi istisnalar görə bilərsiniz.tətbiq. Bununla belə, heç bir Flask proqramı yaratmadığımız üçün bunlara məhəl qoymayın. Tətbiqimiz Werkzeug veb çərçivəsi və Jinja şablon mühərriki üzərində sarğı olan Flask nümunəsidir.
Werkzeug
Werkzeug WSGI alət dəstidir. WSGI yalnız web serverləri üçün veb sorğularını Python proqramlaşdırma dilində yazılmış veb proqramlara yönləndirmək üçün çağırış konvensiyasıdır.
Jinja
Şablonlaşdırma veb tərtibatçılarının əsas bacarıq dəsti. Jinja Python üçün tam xüsusiyyətli və populyar şablon mühərrikidir. Bu, kifayət qədər ifadəli dildir və şablon müəllifləri üçün möhkəm alətlər dəsti təqdim edir.
Addım 4: MongoDB-ni quraşdırın
MongoDB-ni quraşdırmaq üçün aşağıda qeyd olunan addımları izləyin. Onu Debian əsaslı Linux-da quraşdırmaq üçün addımları qeyd etdik. Əgər başqa əməliyyat sistemindən istifadə edirsinizsə, linkə daxil olun və nəzərdə tutulan əməliyyat sisteminə uyğun olaraq quraşdırın.
MongoDB ictimai GPG açarını idxal etmək üçün gnupg quraşdırın.
sudo apt-get install gnupg
İndi aşağıdakı əmrdən istifadə edərək açarı import edin.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Linux paylamanıza uyğun olaraq mənbələr siyahısı faylını yaradın. Debian-a uyğun olaraq mənbələrin siyahısını əlavə etdik.
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
Yeniləmə əmrini yerinə yetirin
sudo apt-get update
İndi aşağıdakı əmrdən istifadə edərək MongoDB-ni quraşdırın.
sudo apt-get install -y mongodb-org
Quraşdırma uğurla başa çatdıqdan sonra aşağıdakı əmrdən istifadə edərək MongoDB-ni işə salın.
sudo systemctl start mongod
MongoDB-nin statusunu əmrdən istifadə edərək yoxlayın.aşağıda.
sudo systemctl status mongod
İndi aşağıda göstərilən əmri verməklə mongodun sistemin yenidən işə salınması zamanı avtomatik işə düşdüyünə əmin olun.
sudo systemctl enable mongod
İndi edə bildiyinizi yoxlayın. mongo müştərisindən istifadə edərək MongoDB serverinə qoşulun.
mongo
Monqo qabığında yardımdan istifadə etməyə və dbs əmrlərini göstərməyə çalışın.
Flask Tətbiqi Yaradın
Flask-appbuilder və mongoengine quraşdırmaq üçün aşağıdakı əmrdən istifadə edin.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Aşağıdakı kod parçasında şərh kimi göstərilən dəyərlərlə skelet proqramı yaradın.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Aşağıda verilənə oxşar çıxışı görəcəyik.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Layihənin və tətbiqin tərtibatına nəzər salın. Aşağıda ağac əmrinin çıxışını göstərdik.
Gəlin Flask konfiqurasiya faylına nəzər salaq. Bu, sonuncu əmrin nəticəsi olaraq yaradılan standart konfiqurasiyadır. Aşağıda göstərildiyi kimi Cyborg mövzusunu şərhdən çıxarın.
# 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 proqramını işə salmaq üçün terminalda aşağıda verilmiş əmrdən istifadə edin.
flask run
Flask Hello World
FlaskTutorialApp-da ilk proqramınızı yaratmaq üçün proqram kataloqu altında views.py faylını açın və aşağıdakı kodu əlavə edin. Faylda verilmiş idxal ifadələrini axtarın. Əgər mövcud deyilsə, bu ifadələri əlavə edin.
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())
Yuxarıdakı mənbə kodunu əlavə etdikdən sonra faylı yadda saxlayın. Layihənin kök kataloquna gedin və Flask-ın inkişaf serverini işə salmaq üçün aşağıdakı əmrdən istifadə edin.
flask run
İndi çıxışı görmək üçün //localhost:5000/hello/ ünvanına keçin.brauzer.
Sazlama
Hazırda inkişaf serveri Debug rejimində işləmir. Sazlama rejimi olmadan, Flask Tətbiqinin mənbə kodunda səhvləri tapmaq çətindir.
Flask-da Debug Mode aşağıdakı nəticələrlə nəticələnir:
- Sazlama rejimi Avtomatik yenidən yükləyicini aktivləşdirir. Bu o deməkdir ki, biz proqramın mənbə kodunda dəyişikliklər etdikdən sonra inkişaf serverini yenidən başlatmağa ehtiyac yoxdur.
- Debug rejimi Python sazlayıcısını aktivləşdirir. Biz İstisna zamanı dəyişənlərin qiymətlərini yoxlaya bilərik.
- Debug rejimi Flask tətbiqinin sazlanmasına imkan verir. Sazlama seanslarında müxtəlif dəyişənlərin dəyərlərini yoxlaya bilərik.
Əgər o artıq işləyirsə, inkişaf serverini dayandırın. Siz eyni şeyi etmək üçün CTRL + C və ya Klaviatura fasiləsindən istifadə edə bilərsiniz.
Sazlama rejimini aktivləşdirmək və inkişaf serverini müvəqqəti işə salmaq üçün aşağıdakı kodu istifadə edin.
FLASK_ENV=development flask run
Axtarış Debugger PIN-i üçün konsolu açın və onu qeyd edin.
İndi yuxarıda yazılmış HelloWorld görünüşünü kod parçasının aşağıdakı sətirləri ilə dəyişdirək. Diqqət yetirin ki, biz fərdi istisna təqdim etmişik.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
//localhost:5000/hello/ ünvanına keçin və tətbiqin istisna qaldırdığını görəcəksiniz. Brauzer aşağıda göstərildiyi kimi yığın izini göstərir.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Bundan əlavə, inkişaf serverinin işlədiyi konsola baxın. Siz tapa bilərsiniz ki, bu dəfəviews.py-də dəyişikliklər avtomatik olaraq aşkar edilir və debug serveri özü tərəfindən yenidən işə salınır. İndi onu əl ilə yenidən başlatmağa ehtiyacımız yoxdur.
Aşağıda göstərildiyi kimi konsolda xətlər olacaq. Biz Sazlama PIN kodunu daha sonra qeyd etməliyik.
* 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
İndi brauzerdə yığın izini yoxlayın və sonuncu sətirə keçin. Görünüşünü genişləndirmək üçün üzərinə klikləyin və qabığı interaktiv rejimdə açmaq üçün CLI ikonasına klikləyin.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Onu açdıqdan sonra brauzerin Sazlama PIN kodu üçün sorğu göstərəcəyini görəcəksiniz. Sazlama PIN kodunu verin və OK düyməsini basın.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Sazlama PIN kodunu verdikdən sonra davam etdikdən sonra biz interaktiv qabığa daxil ola bilərik.
Qabığa brauzer daxilindən daxil oluruq və İstisna səbəbini tapmaq və səhvi daha yaxşı şəkildə idarə etmək üçün dəyişənlərin dəyərlərini yoxlaya bilər. Zəhmət olmasa, aşağıdakı şəkildə göstərilən nümunələrdən birinə baxın.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
İndi aşağıda göstərildiyi kimi view.py-də kodu dəyişdirin. Qeyd edək ki, biz qaldırılmış İstisna olan sətiri şərh etmişik.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Flask Tətbiqinin Sınaqlanması
İndi isə inkişaf etdirdiyimiz Flask tətbiqi üçün ilk testimizi yazaq. Əvvəlcə PyTest-i quraşdırın. PyTest sınaq çərçivəsidir. Bu, bizə daha yaxşı kod yazmağa kömək edir.
Bundan başqa, tətbiqlərimizi inkişaf etdirərkən vahid testləri yaza bildiyimiz üçün TDD yanaşmasına riayət etmək mümkündür. TDD Test-Driven Development deməkdir. Növbəti dərslərimizdəbu seriyada biz həmişə ilk olaraq testlər yazacağıq və öz baxışlarımızı və ya modellərimizi inkişaf etdirəcəyik.
PyTest-i quraşdırın
pip install pytest
İndi proqram kataloqunda testlər adlı qovluq yaradın. test_hello.py adlı fayl yaradın. Görünüşümüzü yoxlamaq üçün ilk vahid testimizi yazaq.
Aşağıdakı kod parçasını kopyalayın və test_hello.py-ə yapışdırın.
#!/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
İşləmək üçün aşağıdakı pytest əmrindən istifadə edin. testlər. PyTest avtomatik olaraq Testləri toplayır və nəticələri standart çıxışda göstərir.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
GitHub İş axını yarat
Biz nümunə tətbiqimiz üçün CI/CD iş axını yaratmaq üçün Git Actions-dan istifadə edirik. Layihəniz üçün aşağıda qeyd olunan addımları yerinə yetirin.
Addım 1: GitHub-da repozitoriya səhifəsinə keçin. Git Actions üzərinə klikləyin.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Addım 2: Səhifədə aşağı diyirləyin və Python paketi üçün mövcud iş axını şablonunu tapın.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Addım 3: Python paketinin İş axınını quraşdırın.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Addım 4: python-package.yml iş axını konfiqurasiyası açıldıqdan sonra onu əlavə olaraq verilmiş yaml əsasında yeniləyin. teq dəyərləri.
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
Biz Flask tətbiqimizi ən son Ubuntu Linux paylamasında sınaqdan keçirmək istəyirik. ƏS-ə əlavə olaraq, biz testlərimizi yalnız Python 3.7 və Python 3.8 istifadə edərək həyata keçirmək istəyirik.
Addım 5: python-package.yml-ni yenilənmiş dəyərlərlə yerinə yetirin.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Addım 6: Əvvəlki səhifədəki öhdəlik bizi GitActions-a aparıriş yerləri.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Addım 7: [İstəyə bağlı]
Nümunə dərslik proqramı üçün Github Jobs səhifəsində biz nişan yarada və yerləşdirə bilərik onu qurma statusunu göstərmək üçün README.md faylında.
İndi hər dəfə dəyişikliklər master filialına daxil edildikdə, python-package.yml-də yazılan Git Workflow izlənəcək və Git Actions-da işləyəcək. .
Nəticə
Bu dərslikdə biz Flask – Python əsaslı veb inkişaf çərçivəsi vasitəsilə hazırlanmış veb tətbiqi üçün ilkin şərtlərdən tutmuş CI/CD iş axınının qurulmasına qədər bütün əsas anlayışları əhatə etdik.
Bu dərslik Python-u quraşdırmaq, yükləmək kimi bütün lazımi addımları əhatə edir. Python istifadə edərək veb-inkişaf etməyə başlamaq üçün Flask quraşdırma, Flask-Appbuilder ilə işləmə, PyTest ilə test və s. Veb inkişaf icması adətən Flask-ı Django adlı digər məşhur Python veb inkişaf çərçivəsi ilə müqayisə edir.
Biz bu fərqləri izah edəcəyik və həmçinin bu silsilədəki dərsliklərdən birində bu çərçivələri müqayisə edəcəyik.