Hướng dẫn số 5: Mẫu thiết kế Flask và các phương pháp hay nhất cho ứng dụng web
Hướng dẫn số 6: Ví dụ về hướng dẫn API Flask
Hướng dẫn giới thiệu Python Flask này giải thích Flask là gì, cài đặt Python, Virtualenv, ví dụ về Flask Hello World với một phần về ví dụ mã, gỡ lỗi và thử nghiệm:
Phát triển trang web là một nghệ thuật hơn là một kỹ năng. Nó đòi hỏi sự kiên nhẫn và siêng năng, cùng với sự kiên trì, can đảm và cống hiến để tạo ra những gì cần thiết để nó trở thành một thành công thực sự. Ngày nay, điều cần thiết là người học phải tăng tốc càng sớm càng tốt.
Chúng tôi đã tạo hướng dẫn Python Flask này để học viên bắt kịp tốc độ và triển khai lập trình web đơn giản cũng như phức tạp bằng Python 3 .
Hướng dẫn Flask Python này giống hướng dẫn dành cho người mới bắt đầu về jar hơn, sẽ bao gồm cài đặt Python, Virtualenv và các gói thiết yếu khác. Trong loạt hướng dẫn này, chúng tôi cũng sẽ cài đặt Flask cùng với các plugin Flask cần thiết khác. Chúng tôi cũng đã bao gồm một phần về gỡ lỗi mã, thử nghiệm và tích hợp liên tục bằng Tác vụ Git.
Danh sách hướng dẫn trong loạt Flask này
Hướng dẫn số 1: Python Flask Hướng dẫn – Giới thiệu về Flask cho người mới bắt đầu
Hướng dẫn số 2: Mẫu Flask, Biểu mẫu, Chế độ xem và Chuyển hướng cùng với các ví dụ
Hướng dẫn số 3: Xử lý cơ sở dữ liệu Flask – Cách sử dụng Flask với cơ sở dữ liệu
Hướng dẫn #4: Ứng dụng Flask và bố cục dự án Flask với Blueprint &các bước đã đề cập trong phần điều kiện tiên quyết.
Bước 1: Cài đặt Python
Kiểm tra xem bạn đã cài đặt Python 3 hay chưa. Nếu không, hãy tải xuống Python 3 từ đây và cài đặt nó theo Hệ điều hành của bạn.
Bước 2: Tạo môi trường ảo Python
Tạo môi trường ảo bằng cách sử dụng lệnh bên dưới.
python3 -m venv venv
Sử dụng lệnh bên dưới để kích hoạt môi trường ảo Python.
source venv/bin/activate
Chúng tôi đã đưa ra một ví dụ về kích hoạt và hủy kích hoạt môi trường ảo bên dưới.
Tất cả các lệnh tiếp theo trong hướng dẫn này sẽ chạy trong môi trường ảo được kích hoạt. Cài đặt gói bánh xe để chúng tôi có thể tạo bánh xe bên trong môi trường ảo.
pip install wheel
Bước 3: Tải xuống và cài đặt Flask
Chúng tôi cần thực hiện các bước tải xuống Flask và cài đặt Flask bằng các bước được đề cập bên dưới.
Bây giờ hãy cài đặt Flask.
pip install flask
Một số người trong chúng ta thích làm việc cùng với những thay đổi mã nguồn mới nhất. Chúng ta có thể sử dụng lệnh được cung cấp bên dưới để cài đặt với những thay đổi mới nhất đối với nguồn của Flask.
Tạo một thư mục tạm thời.
mkdir tmp
Bây giờ hãy cài đặt Flask từ kho lưu trữ Github. Bạn cần duy trì kết nối với Internet để lệnh bên dưới hoạt động.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
Hãy nhìn vào đầu ra của bảng điều khiển để kiểm tra cài đặt thành công. Bây giờ hãy kiểm tra xem chúng ta có thể truy cập các lệnh Flask không.
flask --help
Bạn có thể thấy một số trường hợp ngoại lệ về việc không có Flaskứng dụng. Tuy nhiên, hãy bỏ qua những thứ đó vì chúng tôi chưa tạo bất kỳ ứng dụng Flask nào. Ứng dụng của chúng tôi là một phiên bản của Flask, một trình bao bọc trên khung web Werkzeug và công cụ tạo khuôn mẫu Jinja.
Werkzeug
Werkzeug là một bộ công cụ WSGI. WSGI chỉ là một quy ước gọi để các máy chủ web chuyển tiếp các yêu cầu web tới các ứng dụng web được viết bằng ngôn ngữ lập trình Python.
Jinja
Tạo khuôn mẫu là một bộ kỹ năng cần thiết của các nhà phát triển web. Jinja là một công cụ tạo khuôn mẫu đầy đủ tính năng và phổ biến cho Python. Đây là một ngôn ngữ khá biểu cảm và cung cấp một bộ công cụ mạnh mẽ cho các tác giả mẫu.
Bước 4: Cài đặt MongoDB
Làm theo các bước được đề cập bên dưới để cài đặt MongoDB. Chúng tôi đã phác thảo các bước để cài đặt nó trong Linux dựa trên Debian. Nếu bạn đang sử dụng một hệ điều hành khác, hãy truy cập đường liên kết và cài đặt theo hệ điều hành dự kiến.
Cài đặt gnupg để nhập khóa GPG công khai của MongoDB.
sudo apt-get install gnupg
Bây giờ hãy nhập khóa bằng lệnh bên dưới.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Tạo tệp danh sách nguồn theo bản phân phối Linux của bạn. Chúng tôi đã thêm danh sách các nguồn theo 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
Chạy lệnh cập nhật
sudo apt-get update
Bây giờ hãy cài đặt MongoDB, sử dụng lệnh bên dưới.
sudo apt-get install -y mongodb-org
Sau khi cài đặt thành công, hãy khởi động MongoDB bằng lệnh bên dưới.
sudo systemctl start mongod
Kiểm tra trạng thái của MongoDB bằng lệnhbên dưới.
sudo systemctl status mongod
Bây giờ hãy đảm bảo rằng mongod sẽ tự động khởi động khi hệ thống khởi động lại bằng cách đưa ra lệnh bên dưới.
sudo systemctl enable mongod
Bây giờ hãy kiểm tra xem bạn có thể kết nối với máy chủ MongoDB bằng ứng dụng khách mongo.
mongo
Trong trình bao mongo, hãy thử sử dụng lệnh trợ giúp và hiển thị dbs.
Tạo ứng dụng Flask
Sử dụng lệnh bên dưới để cài đặt jar-appbuilder và mongoengine.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
Tạo ứng dụng khung với các giá trị được hiển thị dưới dạng nhận xét trong đoạn mã bên dưới.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
Chúng ta sẽ thấy kết quả tương tự như kết quả được đưa ra bên dưới.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
Hãy xem bố cục của dự án và ứng dụng. Chúng tôi đã hiển thị đầu ra của lệnh cây bên dưới.
Hãy xem tệp cấu hình Flask. Nó là một cấu hình mặc định được tạo ra như là kết quả của lệnh cuối cùng. Bỏ ghi chú chủ đề Cyborg , như hiển thị bên dưới.
# 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
Để chạy ứng dụng bộ xương, hãy sử dụng lệnh được cung cấp bên dưới trên thiết bị đầu cuối.
flask run
Flask Hello World
Để tạo chương trình đầu tiên của bạn trong jarTutorialApp, hãy mở tệp views.py trong thư mục ứng dụng và thêm mã sau đây. Tìm các câu lệnh nhập được đưa ra trong tệp. Thêm các câu lệnh này nếu chưa có.
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())
Lưu tệp sau khi thêm mã nguồn ở trên. Chuyển đến thư mục gốc của dự án và sử dụng lệnh bên dưới để chạy máy chủ phát triển của Flask.
flask run
Bây giờ hãy điều hướng đến //localhost:5000/hello/ để xem đầu ra trongtrình duyệt.
Gỡ lỗi
Hiện tại, máy chủ phát triển không chạy ở chế độ Gỡ lỗi. Nếu không có chế độ gỡ lỗi, rất khó để tìm lỗi trong mã nguồn của Ứng dụng Flask.
Chế độ gỡ lỗi trong Flask dẫn đến kết quả như sau:
- Chế độ gỡ lỗi kích hoạt Trình tải lại tự động. Điều đó có nghĩa là chúng ta không cần khởi động lại máy chủ phát triển sau khi thực hiện các thay đổi trong mã nguồn của ứng dụng.
- Chế độ gỡ lỗi sẽ kích hoạt trình gỡ lỗi Python. Chúng tôi có thể kiểm tra giá trị của các biến trong Ngoại lệ.
- Chế độ gỡ lỗi cho phép gỡ lỗi ứng dụng Flask. Chúng tôi có thể kiểm tra giá trị của các biến khác nhau trong các phiên gỡ lỗi.
Dừng máy chủ phát triển nếu nó đang chạy. Bạn có thể sử dụng CTRL + C hoặc ngắt Bàn phím để thực hiện tương tự.
Sử dụng mã sau để bật chế độ gỡ lỗi và tạm thời chạy máy chủ phát triển.
FLASK_ENV=development flask run
Tìm kiếm bảng điều khiển cho mã PIN của Trình gỡ lỗi và ghi lại mã PIN đó.
Bây giờ, hãy thay đổi chế độ xem HelloWorld đã viết ở trên bằng các dòng đoạn mã sau. Lưu ý rằng chúng tôi đã giới thiệu một ngoại lệ tùy chỉnh.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Điều hướng đến //localhost:5000/hello/ và bạn sẽ thấy rằng ứng dụng đã đưa ra một ngoại lệ. Trình duyệt hiển thị dấu vết ngăn xếp, như minh họa bên dưới.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
Ngoài ra, hãy xem bảng điều khiển nơi máy chủ phát triển đang chạy. Bạn sẽ thấy rằng lần này,các thay đổi trong views.py được tự động phát hiện và máy chủ gỡ lỗi tự khởi động lại. Bây giờ, chúng ta không cần phải khởi động lại nó theo cách thủ công.
Bảng điều khiển sẽ có các dòng như hình minh họa bên dưới. Chúng ta cần ghi lại mã PIN Gỡ lỗi để dùng sau.
* 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
Bây giờ hãy kiểm tra dấu vết ngăn xếp trong trình duyệt và chuyển đến dòng cuối cùng. Nhấp vào nó để mở rộng chế độ xem và nhấp vào biểu tượng CLI để mở trình bao ở chế độ tương tác.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
Sau khi mở trình bao, Bạn sẽ thấy rằng trình duyệt sẽ hiển thị lời nhắc nhập mã PIN Gỡ lỗi. Cung cấp mã PIN Gỡ lỗi và nhấp vào OK.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
Sau khi chúng tôi tiếp tục sau khi cung cấp mã PIN Gỡ lỗi, chúng tôi có thể truy cập trình bao tương tác.
Chúng tôi truy cập trình bao từ bên trong trình duyệt và có thể kiểm tra giá trị của các biến để tìm ra nguyên nhân của Ngoại lệ và xử lý lỗi theo cách tốt hơn. Vui lòng xem một trong những ví dụ được hiển thị trong hình bên dưới.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
Bây giờ hãy thay đổi mã trong view.py, như được hiển thị bên dưới. Lưu ý rằng chúng tôi đã nhận xét về dòng có Ngoại lệ được nêu ra.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
Kiểm tra ứng dụng Flask
Bây giờ, hãy viết thử nghiệm đầu tiên cho ứng dụng Flask mà chúng tôi đang phát triển. Đầu tiên, hãy cài đặt PyTest. PyTest là một khung thử nghiệm. Nó giúp chúng tôi viết mã tốt hơn.
Hơn nữa, chỉ vì chúng tôi có thể viết các bài kiểm tra đơn vị trong khi phát triển các ứng dụng của mình nên có thể thực hiện theo phương pháp TDD. TDD là viết tắt của Phát triển dựa trên thử nghiệm. Trong các hướng dẫn tiếp theo của chúng tôi vềtrong loạt bài này, chúng tôi sẽ luôn viết các bài kiểm tra trước và phát triển các chế độ xem hoặc mô hình của mình.
Cài đặt PyTest
pip install pytest
Bây giờ hãy tạo một thư mục có tên tests bên trong thư mục ứng dụng và trong đó tạo một tệp có tên test_hello.py. Hãy viết bài kiểm tra đơn vị đầu tiên để kiểm tra chế độ xem của chúng ta.
Sao chép đoạn mã sau và dán vào 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
Sử dụng lệnh pytest bên dưới để chạy Các bài kiểm tra. PyTest tự động thu thập các Thử nghiệm và hiển thị kết quả trên đầu ra tiêu chuẩn.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
Tạo Quy trình làm việc GitHub
Chúng tôi sử dụng Tác vụ Git để tạo quy trình làm việc CI/CD cho ứng dụng mẫu của mình. Làm theo các bước được đề cập bên dưới cho dự án của bạn.
Bước 1: Điều hướng đến trang kho lưu trữ trên GitHub. Nhấp vào Tác vụ Git.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
Bước 2: Cuộn xuống trên trang và tìm mẫu quy trình làm việc hiện có cho gói Python.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
Bước 3: Thiết lập Quy trình công việc gói Python.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
Bước 4: Khi cấu hình quy trình công việc python-package.yml mở ra, hãy cập nhật nó dựa trên yaml bổ sung đã cho giá trị thẻ.
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
Chúng tôi muốn thử nghiệm ứng dụng Flask của mình trên bản phân phối Ubuntu Linux mới nhất. Ngoài hệ điều hành, chúng tôi chỉ muốn chạy thử nghiệm bằng Python 3.7 và Python 3.8.
Bước 5: Xác nhận python-package.yml với các giá trị được cập nhật.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
Bước 6: Cam kết ở trang trước sẽ đưa chúng ta đến GitActionsviệc làm.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
Bước 7: [Tùy chọn]
Trên trang Việc làm Github cho ứng dụng hướng dẫn mẫu, chúng ta có thể tạo huy hiệu và đặt nó trên tệp README.md để hiển thị trạng thái bản dựng.
Bây giờ, bất cứ khi nào các thay đổi được chuyển giao cho nhánh chính, Quy trình công việc Git, như được viết trong python-package.yml sẽ được theo dõi và chạy trên Git Actions .
Kết luận
Trong hướng dẫn này, chúng tôi đã đề cập đến tất cả các khái niệm cơ bản từ điều kiện tiên quyết đến thiết lập quy trình làm việc CI/CD cho ứng dụng web được phát triển bằng Flask – Một khung phát triển web dựa trên Python.
Hướng dẫn này bao gồm tất cả các bước cần thiết như cài đặt Python, tải xuống & cài đặt Flask, làm việc với Flask-Appbuilder, thử nghiệm với PyTest, v.v. để bắt đầu phát triển web bằng Python. Cộng đồng phát triển web thường so sánh Flask với một khung phát triển web Python phổ biến khác có tên là Django.
Chúng tôi sẽ giải thích những điểm khác biệt này và cũng sẽ so sánh các khung này trong một trong các hướng dẫn của loạt bài này.