Tutorial #5: Corak Reka Bentuk Flask Dan Amalan Terbaik Untuk Aplikasi Web
Tutorial #6: Tutorial Flask API Dengan Contoh
Tutorial Python Flask pengenalan ini menerangkan apa itu Flask, pemasangan contoh Python, Virtualenv, Flask Hello World dengan bahagian contoh kod, penyahpepijatan dan ujian:
Pembangunan tapak web ialah lebih kepada seni daripada kemahiran. Ia memerlukan kesabaran dan ketekunan, bersama-sama dengan ketekunan, keberanian, dan dedikasi untuk mencipta apa yang diperlukan untuk mencapai kejayaan sebenar. Pada masa kini, adalah penting bagi pelajar untuk mempercepatkan secepat mungkin.
Kami telah mencipta tutorial Flask Python ini untuk pelajar mendapatkan kelajuan dan melaksanakan pengaturcaraan web yang mudah serta kompleks menggunakan Python 3 .
Tutorial Kelalang Python ini lebih seperti tutorial pemula kelalang, yang akan merangkumi pemasangan Python, Virtualenv, dan pakej penting lain. Dalam siri tutorial ini, kami juga akan memasang Flask bersama-sama dengan pemalam Flask lain yang diperlukan. Kami juga telah menyertakan bahagian tentang penyahpepijatan kod, ujian dan penyepaduan berterusan menggunakan Git Actions.
Senarai Tutorial Dalam Siri Flask Ini
Tutorial #1: Python Flask Tutorial – Pengenalan Kepada Flask Untuk Pemula
Tutorial #2: Templat Kelalang, Bentuk, Lihat dan Ubah Hala Dengan Contoh
Tutorial #3: Pengendalian Pangkalan Data Flask – Cara Menggunakan Flask Dengan Pangkalan Data
Tutorial #4: Apl Flask Dan Reka Letak Projek Flask Dengan Blueprint &langkah yang dinyatakan dalam prasyarat.
Langkah 1: Pasang Python
Semak sama ada anda telah memasang Python 3 atau tidak. Jika tidak, kemudian muat turun Python 3 dari di sini dan pasangkannya mengikut Sistem Pengendalian anda.
Langkah 2: Cipta Persekitaran Maya Python
Buat persekitaran maya menggunakan arahan di bawah.
python3 -m venv venv
Gunakan perintah di bawah untuk mengaktifkan persekitaran maya Python.
source venv/bin/activate
Kami telah memberikan contoh pengaktifan dan penyahaktifan persekitaran maya di bawah.
Semua arahan seterusnya dalam tutorial ini harus dijalankan dalam persekitaran maya yang diaktifkan. Pasang pakej roda supaya kita boleh membina roda di dalam persekitaran maya.
pip install wheel
Langkah 3: Muat Turun Dan Pasang Flask
Kita perlu melakukan langkah muat turun Flask dan pasang Flask menggunakan langkah yang dinyatakan di bawah.
Sekarang pasang Flask.
pip install flask
Sesetengah daripada kami suka bekerja bersama-sama dengan perubahan kod sumber terkini. Kita boleh menggunakan arahan yang diberikan di bawah untuk memasang dengan perubahan terkini kepada sumber Flask.
Buat direktori sementara.
mkdir tmp
Sekarang pasang Flask daripada repositori Github. Anda perlu kekal bersambung ke Internet untuk arahan di bawah berfungsi.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Lihat pada output konsol untuk menyemak pemasangan yang berjaya. Sekarang semak sama ada kita boleh mengakses arahan Flask.
flask --help
Anda mungkin melihat beberapa pengecualian tentang ketiadaan Flaskpermohonan. Walau bagaimanapun, abaikan mereka kerana kami belum mencipta sebarang aplikasi Flask. Apl kami ialah contoh Flask, yang merupakan pembalut pada rangka kerja web Werkzeug dan enjin templat Jinja.
Werkzeug
Werkzeug ialah kit alat WSGI. WSGI hanyalah konvensyen panggilan untuk pelayan web untuk memajukan permintaan web kepada aplikasi web yang ditulis dalam bahasa pengaturcaraan Python.
Jinja
Templat ialah satu set kemahiran penting pembangun web. Jinja ialah enjin templat berciri penuh dan popular untuk Python. Ia adalah bahasa yang agak ekspresif dan menyediakan set alat yang mantap kepada pengarang templat.
Langkah 4: Pasang MongoDB
Ikuti langkah yang dinyatakan di bawah untuk memasang MongoDB. Kami telah menggariskan langkah-langkah untuk memasangnya dalam Linux berasaskan Debian. Jika anda menggunakan sistem pengendalian lain, kemudian akses pautan dan pasang mengikut sistem pengendalian yang dimaksudkan.
Pasang gnupg untuk mengimport kunci GPG awam MongoDB.
sudo apt-get install gnupg
Sekarang import kunci menggunakan arahan di bawah.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Buat fail senarai sumber mengikut pengedaran Linux anda. Kami telah menambah senarai sumber mengikut 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
Jalankan perintah kemas kini
sudo apt-get update
Sekarang pasang MongoDB, menggunakan arahan di bawah.
sudo apt-get install -y mongodb-org
Setelah pemasangan berjaya, mulakan MongoDB menggunakan arahan di bawah.
sudo systemctl start mongod
Semak status MongoDB, menggunakan arahandi bawah.
sudo systemctl status mongod
Sekarang pastikan mongod bermula secara automatik pada but semula sistem dengan mengeluarkan arahan yang ditunjukkan di bawah.
sudo systemctl enable mongod
Sekarang semak sama ada anda boleh sambung ke pelayan MongoDB menggunakan klien mongo.
mongo
Dalam cangkerang mongo, cuba gunakan bantuan dan tunjukkan arahan dbs.
Cipta Apl Kelalang
Gunakan arahan di bawah untuk memasang flask-appbuilder dan mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Buat apl rangka dengan nilai yang ditunjukkan sebagai ulasan dalam coretan kod di bawah.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Kami akan melihat output yang serupa dengan yang diberikan di bawah.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Sila lihat pada reka letak projek dan apl. Kami telah menunjukkan output arahan pepohon di bawah.
Mari kita lihat fail konfigurasi Flask. Ia adalah konfigurasi lalai yang dihasilkan sebagai hasil daripada arahan terakhir. Nyahtandakan tema Cyborg , seperti yang ditunjukkan di bawah.
# 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
Untuk menjalankan apl rangka, gunakan perintah yang diberikan di bawah pada terminal.
flask run
Flask Hello World
Untuk mencipta program pertama anda dalam flaskTutorialApp, buka fail views.py di bawah direktori aplikasi dan tambah kod berikut. Cari pernyataan import yang diberikan dalam fail. Tambahkan pernyataan ini jika belum ada.
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())
Simpan fail selepas menambah kod sumber di atas. Pergi ke direktori akar projek dan gunakan arahan di bawah untuk menjalankan pelayan pembangunan Flask.
flask run
Sekarang navigasi ke //localhost:5000/hello/ untuk melihat output dalampenyemak imbas.
Penyahpepijatan
Pada masa ini, pelayan pembangunan tidak berjalan dalam mod Nyahpepijat. Tanpa mod nyahpepijat, sukar untuk mencari ralat dalam kod sumber Aplikasi Flask.
Mod Nyahpepijat dalam Flask menghasilkan perkara berikut:
- Mod nyahpepijat mengaktifkan Pemuat semula automatik. Ini bermakna kita tidak perlu memulakan semula pelayan pembangunan selepas kita membuat perubahan dalam kod sumber aplikasi.
- Mod nyahpepijat mengaktifkan penyahpepijat Python. Kami boleh memeriksa nilai pembolehubah semasa Pengecualian.
- Mod nyahpepijat membolehkan penyahpepijatan aplikasi Flask. Kita boleh menyemak nilai pelbagai pembolehubah dalam sesi penyahpepijatan.
Hentikan pelayan pembangunan jika ia sudah berjalan. Anda boleh menggunakan CTRL + C atau sampukan Papan Kekunci untuk melakukan perkara yang sama.
Gunakan kod berikut untuk mendayakan mod nyahpepijat dan jalankan pelayan pembangunan buat sementara waktu.
FLASK_ENV=development flask run
Cari konsol untuk PIN Debugger dan catatkannya.
Sekarang mari kita tukar paparan HelloWorld bertulis di atas dengan baris coretan kod berikut. Perhatikan bahawa kami telah memperkenalkan pengecualian tersuai.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Navigasi ke //localhost:5000/hello/, dan anda akan melihat bahawa aplikasi telah menimbulkan pengecualian. Penyemak imbas memaparkan surih tindanan, seperti yang ditunjukkan di bawah.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Selain itu, lihat pada konsol tempat pelayan pembangunan sedang berjalan. Anda akan mendapati bahawa kali ini, yangperubahan dalam views.py dikesan secara automatik dan pelayan nyahpepijat dimulakan semula dengan sendirinya. Sekarang kita tidak perlu memulakan semula secara manual.
Konsol akan mempunyai garisan, seperti yang ditunjukkan di bawah. Kita perlu mencatat PIN Nyahpepijat untuk kemudian.
* 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
Sekarang semak surih tindanan dalam penyemak imbas dan pergi ke baris terakhir. Klik padanya untuk mengembangkan paparannya dan klik pada ikon CLI untuk membuka cangkerang dalam mod interaktif.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Sebaik sahaja anda membukanya, Anda akan melihat bahawa penyemak imbas akan menunjukkan gesaan untuk PIN Nyahpepijat. Berikan PIN Nyahpepijat dan klik pada OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Sebaik sahaja kami meneruskan selepas memberikan PIN Nyahpepijat, kami boleh mengakses cangkerang interaktif.
Kami mengakses cangkerang dari dalam penyemak imbas dan boleh memeriksa nilai pembolehubah untuk mencari punca Pengecualian dan mengendalikan ralat dengan cara yang lebih baik. Sila lihat salah satu contoh yang ditunjukkan dalam imej di bawah.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Sekarang tukar kod dalam view.py, seperti yang ditunjukkan di bawah. Harap maklum bahawa kami telah mengulas pada baris yang mempunyai Exception yang dinaikkan.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Menguji Aplikasi Flask
Sekarang mari tulis ujian pertama kami untuk aplikasi Flask yang sedang kami bangunkan. Mula-mula, pasang PyTest. PyTest ialah rangka kerja ujian. Ia membantu kami menulis kod yang lebih baik.
Selain itu, hanya kerana kami boleh menulis ujian unit semasa membangunkan aplikasi kami, adalah mungkin untuk mengikuti pendekatan TDD. TDD adalah singkatan kepada Pembangunan Dipacu Ujian. Dalam tutorial kami seterusnyasiri ini, kami akan sentiasa menulis ujian terlebih dahulu dan membangunkan pandangan atau model kami.
Pasang PyTest
pip install pytest
Sekarang buat direktori yang dipanggil ujian di dalam direktori apl dan di dalamnya buat fail bernama test_hello.py. Mari tulis ujian unit pertama kami untuk menguji paparan kami.
Salin coretan kod berikut dan tampalkannya ke dalam 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
Gunakan perintah pytest di bawah untuk menjalankan ujian-ujian itu. PyTest secara automatik mengumpulkan Ujian dan memaparkan keputusan pada output standard.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Cipta Aliran Kerja GitHub
Kami menggunakan Git Actions untuk mencipta aliran kerja CI/CD untuk aplikasi sampel kami. Ikuti langkah yang dinyatakan di bawah untuk projek anda.
Langkah 1: Navigasi ke halaman repositori di GitHub. Klik pada Tindakan Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Langkah 2: Tatal ke bawah pada halaman dan cari templat aliran kerja sedia ada untuk pakej Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Langkah 3: Sediakan Aliran Kerja pakej Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Langkah 4: Setelah konfigurasi aliran kerja python-package.yml dibuka, kemas kini ia berdasarkan tambahan yaml yang diberikan nilai teg.
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 ingin menguji aplikasi Flask kami pada pengedaran Linux Ubuntu terkini. Selain OS, kami ingin menjalankan ujian kami hanya menggunakan Python 3.7 dan Python 3.8.
Langkah 5: Komit python-package.yml dengan nilai yang dikemas kini.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Langkah 6: Komit dalam halaman sebelumnya membawa kita ke GitActionskerja.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Langkah 7: [Pilihan]
Pada halaman Pekerjaan Github untuk contoh apl tutorial, kami boleh membuat lencana dan meletakkan pada fail README.md untuk memaparkan status binaan.
Kini, apabila perubahan dilakukan pada cawangan induk, Aliran Kerja Git, seperti yang ditulis dalam python-package.yml akan diikuti dan dijalankan pada Tindakan Git .
Kesimpulan
Dalam tutorial ini, kami telah merangkumi semua konsep asas daripada prasyarat untuk menyediakan aliran kerja CI/CD untuk aplikasi web yang dibangunkan menggunakan Flask – Rangka kerja pembangunan web berasaskan Python.
Tutorial ini merangkumi semua langkah yang diperlukan seperti memasang Python, memuat turun & memasang Flask, bekerja dengan Flask-Appbuilder, menguji dengan PyTest, dll. untuk memulakan pembangunan web menggunakan Python. Komuniti pembangunan web biasanya membandingkan Flask dengan satu lagi rangka kerja pembangunan web Python popular yang dipanggil Django.
Kami akan menerangkan perbezaan ini dan juga akan membandingkan rangka kerja ini dalam salah satu tutorial dalam siri ini.