Tutorial #5: Pola Desain Flask Jeung Praktek Pangalusna Pikeun Aplikasi Wéb
Tutorial #6: Tutorial Flask API Jeung Conto
Tutorial bubuka Python Flask ieu ngajelaskeun naon éta Flask, pamasangan Python, Virtualenv, Flask Hello World conto sareng bagian ngeunaan conto kode, debugging, sareng uji:
Pamekaran wéb nyaéta leuwih ti hiji seni ti skill a. Merlukeun kasabaran sareng karajinan, sareng katekunan, kawani, sareng dedikasi pikeun nyiptakeun naon anu dipikabutuh pikeun janten kasuksésan anu nyata. Poé ieu, penting pisan pikeun peserta didik sangkan gancang-gancang.
Kami geus nyieun tutorial Python Flask ieu pikeun siswa sangkan gancang jeung nerapkeun pemrograman web basajan ogé kompléks maké Python 3 .
Tutorial Python Flask Ieu leuwih kawas tutorial pemula flask, nu bakal nutupan pamasangan Python, Virtualenv, sareng pakét penting anu sanés. Dina séri tutorial ieu, urang ogé bakal masang Flask sareng plugins Flask anu sanés. Kami ogé parantos ngalebetkeun bagian ngeunaan debugging kode, uji, sareng integrasi kontinyu nganggo Git Actions.
Daptar Tutorial Dina Runtuyan Flask Ieu
Tutorial #1: Flask Python Tutorial – Perkenalan Flask Pikeun Pamula
Tutorial #2: Citakan Flask, Bentuk, Témbongkeun, Jeung Alihan Jeung Conto
Tutorial #3: Penanganan Database Flask - Kumaha Nganggo Flask Sareng Database
Tutorial #4: Flask App sareng Layout Project Flask Sareng Blueprint & amp;disebutkeun léngkah-léngkah dina prasarat.
Lengkah 1: Pasang Python
Parios naha anjeun parantos masang Python 3 atanapi henteu. Upami henteu, teras unduh Python 3 ti di dieu teras pasang saluyu sareng Sistem Operasi anjeun.
Lengkah 2: Jieun Lingkungan Maya Python
Jieun lingkungan virtual nganggo paréntah di handap.
python3 -m venv venv
Paké paréntah di handap pikeun ngaktipkeun lingkungan maya Python.
source venv/bin/activate
Kami parantos masihan conto aktivasina sareng nganonaktipkeun lingkungan virtual di handap.
Sadaya paréntah saterusna dina tutorial ieu kedah dijalankeun dina lingkungan maya anu diaktipkeun. Pasang paket roda supados urang tiasa ngawangun roda di jero lingkungan virtual.
pip install wheel
Lengkah 3: Unduh Flask Sareng Pasang
Urang kedah ngalaksanakeun léngkah-léngkah unduh Flask sareng pasang Flask nganggo léngkah-léngkah anu disebatkeun di handap ieu.
Ayeuna pasang Flask.
pip install flask
Sababaraha urang resep damel sareng parobihan kodeu sumber panganyarna. Urang tiasa nganggo paréntah di handap ieu pikeun masang sareng parobihan panganyarna tina sumber Flask.
Jieun diréktori samentawis.
mkdir tmp
Ayeuna pasang Flask tina gudang Github. Anjeun kedah tetep nyambung ka internét supados paréntah di handap tiasa dianggo.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Tingali kaluaran konsol pikeun mariksa pamasangan anu suksés. Ayeuna pariksa naha urang tiasa ngaksés paréntah Flask.
flask --help
Anjeun tiasa ningali sababaraha pengecualian ngeunaan henteuna Flask.aplikasi. Nanging, abaikan éta sabab kami henteu acan nyiptakeun aplikasi Flask. Aplikasi kami mangrupikeun conto Flask, anu mangrupikeun bungkus dina kerangka wéb Werkzeug sareng mesin template Jinja.
Werkzeug
Werkzeug mangrupikeun toolkit WSGI. WSGI ngan ukur konvénsi panggero pikeun server wéb pikeun neraskeun paménta wéb kana aplikasi wéb anu ditulis dina basa pamrograman Python.
Jinja
Templating mangrupikeun kaahlian penting pamekar wéb. Jinja mangrupikeun mesin templating anu lengkep sareng populér pikeun Python. Basa ieu rada ekspresif jeung nyadiakeun sakumpulan pakakas anu kuat pikeun pangarang citakan.
Lengkah 4: Pasang MongoDB
Tuturkeun léngkah-léngkah anu disebutkeun di handap pikeun masang MongoDB. Kami parantos ngajelaskeun léngkah-léngkah pikeun masang éta dina Linux dumasar Debian. Upami anjeun nganggo sistem operasi anu sanés, teras aksés kana tautan sareng pasang saluyu sareng sistem operasi anu dimaksud.
Pasang gnupg pikeun ngimpor konci GPG publik MongoDB.
sudo apt-get install gnupg
Ayeuna impor konci nganggo paréntah di handap.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Jieun file daptar sumber dumasar kana distribusi Linux anjeun. Kami parantos nambihan daptar sumber dumasar kana 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
Jalankeun paréntah update
sudo apt-get update
Ayeuna pasang MongoDB, nganggo paréntah di handap ieu.
sudo apt-get install -y mongodb-org
Sanggeus pamasangan suksés, mimitian MongoDB nganggo paréntah di handap ieu.
sudo systemctl start mongod
Parios status MongoDB, nganggo paréntah.di handap.
sudo systemctl status mongod
Ayeuna pastikeun mongod otomatis dimimitian dina reboot sistem ku cara ngaluarkeun paréntah di handap ieu.
sudo systemctl enable mongod
Ayeuna pariksa naha anjeun tiasa nyambung ka server MongoDB nganggo klien mongo.
mongo
Dina cangkang mongo, cobian nganggo bantosan sareng tunjukkeun paréntah dbs.
Jieun Aplikasi Flask
Paké paréntah di handap pikeun masang flask-appbuilder sareng mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Jieun aplikasi rangka kalayan niléy-niléy anu dipidangkeun salaku koméntar dina snippet kode di handap ieu.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Kami bakal ningali kaluaran anu sami sareng anu dipasihkeun di handap ieu.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Tingali tata perenah proyék sareng aplikasina. Kami parantos nunjukkeun kaluaran paréntah tangkal di handap.
Hayu urang tingali file konfigurasi Flask. Ieu mangrupakeun config standar dihasilkeun salaku hasil tina paréntah panungtungan. Batal komentar Cyborg tema, saperti ditémbongkeun di handap.
# 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
Pikeun ngajalankeun aplikasi rangka, paké paréntah di handap dina terminal.
flask run
Flask Hello World
Pikeun nyieun program munggaran anjeun dina flaskTutorialApp, buka file views.py handapeun diréktori aplikasi tur tambahkeun kodeu handap. Tingali pikeun pernyataan impor anu dipasihkeun dina file. Tambihkeun pernyataan ieu upami teu acan aya.
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())
Simpen file saatos nambihan kode sumber di luhur. Pindah ka diréktori akar proyék sareng nganggo paréntah di handap ieu pikeun ngajalankeun server pangembangan Flask.
flask run
Ayeuna arahkeun ka //localhost:5000/hello/ kanggo ningali kaluaran dinabrowser.
Debugging
Ayeuna, pangladén pamekaran teu jalan dina modeu Debug. Tanpa mode debugging, hese neangan kasalahan dina kode sumber Flask Application.
Debug Mode dina Flask ngakibatkeun kieu:
- Modeu debug ngaktipkeun Reloader otomatis. Ieu ngandung harti yén urang teu kudu ngamimitian deui server ngembangkeun sanggeus urang nyieun parobahan dina kode sumber aplikasi.
- Modeu debug ngaktifkeun debugger Python. Urang tiasa mariksa nilai-nilai variabel salami Exception.
- Modeu debug ngaktifkeun debugging aplikasi Flask. Urang bisa mariksa niléy-niléy tina rupa-rupa variabel dina sési debugging.
Pareuman pangladén pamekaran lamun geus jalan. Anjeun tiasa nganggo CTRL + C atanapi Interrupt keyboard pikeun ngalakukeun hal anu sami.
Paké kodeu ieu pikeun ngaktipkeun mode debug sareng ngajalankeun server pamekaran samentawis.
FLASK_ENV=development flask run
Paluruh konsol pikeun PIN Debugger sareng catet éta.
Ayeuna hayu urang robih tampilan HelloWorld anu ditulis di luhur ku baris snippet kode di handap ieu. Perhatikeun yén kami parantos ngenalkeun pengecualian khusus.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Napigasi ka //localhost:5000/hello/, sareng anjeun bakal ningali yén aplikasi parantos ngangkat pengecualian. Browser mintonkeun jejak tumpukan, sakumaha ditémbongkeun di handap ieu.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Salajengna, tingali konsol dimana server pamekaran jalan. Anjeun bakal manggihan yén waktos ieu, nuparobahan dina views.py otomatis dideteksi, sarta server debug balikan deui ku sorangan. Ayeuna urang henteu kedah ngamimitian deui sacara manual.
Konsol bakal aya garis, sapertos anu dipidangkeun di handap. Urang kedah perhatikeun PIN Debug kanggo engké.
* 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
Ayeuna pariksa lacak tumpukan dina browser sareng angkat ka baris terakhir. Pencét éta pikeun ngagedekeun panempoan sareng klik ikon CLI pikeun muka cangkang dina modeu interaktif.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Sawaktos anjeun muka, anjeun bakal ningali yén browser bakal nunjukkeun pituduh pikeun PIN Debug. Pasihan PIN Debug teras klik OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Saparantos urang teraskeun saatos masihan PIN Debug, urang tiasa ngaksés cangkang interaktif.
Urang ngaksés cangkang tina jero browser sareng tiasa mariksa nilai-nilai variabel pikeun milari panyababna Pangecualian sareng nanganan kasalahan dina cara anu langkung saé. Punten tingali salah sahiji conto anu dipidangkeun dina gambar di handap ieu.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Ayeuna robih kodeu dina view.py, sapertos anu dipidangkeun di handap. Catet yén kami parantos mairan kana garis anu ngagaduhan Exception anu diangkat.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Nguji Aplikasi Flask
Ayeuna hayu urang nyerat tés munggaran pikeun aplikasi Flask anu kami kembangkeun. Mimiti, pasang PyTest. PyTest mangrupikeun kerangka tés. Éta ngabantosan urang nyerat kode anu langkung saé.
Salain éta, ngan kusabab urang tiasa nyerat tés unit nalika ngembangkeun aplikasi urang, anjeun tiasa nuturkeun pendekatan TDD. TDD nangtung pikeun Test-Driven Development. Dina tutorials saterusna urang tinaruntuyan ieu, urang bakal salawasna nulis tés munggaran tur ngamekarkeun pintonan atawa model urang.
Pasang PyTest
pip install pytest
Ayeuna jieun diréktori nu disebut tés di jero diréktori aplikasi jeung di éta. nyieun file disebut test_hello.py. Hayu urang nyerat unit test munggaran urang pikeun nguji pintonan urang.
Salin snippet kode di handap ieu teras tempelkeun kana 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
Paké paréntah pytest di handap pikeun ngajalankeun tés. PyTest otomatis ngumpulkeun Tés jeung mintonkeun hasil dina kaluaran standar.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Jieun Alur Kerja GitHub
Kami nganggo Git Actions pikeun nyieun alur kerja CI/CD pikeun aplikasi sampel urang. Turutan léngkah-léngkah ieu di handap pikeun proyék anjeun.
Lengkah 1: Napigasi ka kaca gudang di GitHub. Klik Git Actions.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Lengkah 2: Gulung ka handap dina kaca jeung panggihan témplat alur kerja nu geus aya pikeun pakét Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Lengkah 3: Nyetél Alur Kerja Paket Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Lengkah 4: Sakali konfigurasi alur kerja python-package.yml dibuka, apdet dumasar kana tambahan yaml anu dipasihkeun nilai 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
Kami hoyong nguji aplikasi Flask kami dina distribusi Linux Ubuntu panganyarna. Salian ti OS, urang rék ngajalankeun tés urang ngan ngagunakeun Python 3.7 jeung Python 3.8.
Lengkah 5: Komit python-package.yml kalawan nilai diropéa.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Lengkah 6: Komitmen dina kaca saméméhna mawa urang ka GitActionsjobs.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Lengkah 7: [Opsional]
Dina kaca Github Jobs pikeun conto aplikasi tutorial, urang bisa nyieun badge jeung tempat eta dina file README.md pikeun mintonkeun status ngawangun.
Ayeuna, iraha wae parobahanana komitmen ka cabang master, Git Workflow, sakumaha ditulis dina python-package.yml bakal dituturkeun tur ngajalankeun on Git Actions .
Kacindekan
Dina tutorial ieu, urang geus nutupan sakabéh konsép dasar ti prasarat pikeun nyetel CI / CD workflow pikeun aplikasi wéb dimekarkeun maké Flask - A kerangka ngembangkeun web basis Python.
Tutorial ieu nyertakeun sadaya léngkah anu diperyogikeun sapertos masang Python, ngaunduh & amp; masang Flask, damel sareng Flask-Appbuilder, nguji sareng PyTest, jsb pikeun ngamimitian pangwangunan wéb nganggo Python. Komunitas pamekar wéb biasana ngabandingkeun Flask sareng kerangka pamekaran wéb Python sanés anu disebut Django.
Kami bakal ngajelaskeun bédana ieu sareng ogé bakal ngabandingkeun kerangka ieu dina salah sahiji tutorial dina séri ieu.