Flask: Framework Web Python Gọn Nhẹ
Flask là một framework web Python bọc trực tiếp hai thư viện: Werkzeug xử lý request và response, còn Jinja xử lý template. Nó gọn nhẹ, xây trên WSGI, và đưa ra gợi ý thay vì bắt buộc: bạn tự chọn lớp cơ sở dữ liệu, xác thực, và cấu trúc thư mục. Hãy chọn Flask nếu bạn muốn tự lắp ráp một ứng dụng web từ các thành phần bạn chọn; bỏ qua nếu bạn muốn một framework đưa sẵn cấu trúc hoàn chỉnh.
Tìm Hiểu Framework Tối Giản Flask
Flask là một framework web Python được xây dựng trực tiếp trên WSGI, giao diện chuẩn giữa code Python và một web server. Nó khởi đầu như một lớp mỏng kết nối phần xử lý request của Werkzeug với phần template của Jinja, và dự án vẫn giữ phạm vi hẹp đó từ đó tới nay: Flask gợi ý cách xây dựng ứng dụng chứ không bắt buộc một cơ sở dữ liệu, hệ thống xác thực, hay cấu trúc file cụ thể nào.
Đặc Điểm Chính Của Flask
- ✓Xây dựng trên WSGI, giao diện mà các web server Python dùng để giao tiếp với code ứng dụng của bạn.
- ✓Bọc Werkzeug để xử lý request và response, và Jinja để xử lý template, thay vì tự viết lại cả hai lớp này từ đầu.
- ✓Không bắt buộc cấu trúc dự án hay tập phụ thuộc cố định; framework đưa ra gợi ý thay vì áp đặt.
- ✓Route được đăng ký bằng decorator @app.route() đơn giản trên một hàm, đúng như ví dụ khởi động nhanh của Flask cho thấy.
- ✓Khởi động server phát triển cục bộ bằng lệnh `flask run`, mặc định lắng nghe tại http://127.0.0.1:5000/.
- ✓Có thể mở rộng qua các package do cộng đồng xây dựng, thay vì một hệ thống plugin tích hợp sẵn của riêng Flask.
- ✓Được tổ chức Pallets duy trì, cùng tổ chức này cũng duy trì Werkzeug và Jinja.
- ✓Phát hành theo giấy phép BSD-3-Clause.
Chạy Một Ứng Dụng Flask Cơ Bản
Các dữ kiện có ở đây không nêu lệnh pip install cho Flask, nên bước cài đặt cụ thể không được ghi rõ trong tài liệu này. Điều được thể hiện rõ là cách chạy ứng dụng sau khi đã viết xong: lưu một script thành app.py, rồi chạy `flask run` trong thư mục đó. Server phát triển tích hợp sẵn khởi động tại http://127.0.0.1:5000/, và bạn dừng nó bằng Ctrl+C.
Tạo Route Flask Đầu Tiên Của Bạn
Ví dụ khởi động nhanh của chính Flask khá ngắn: import Flask, tạo `app = Flask(__name__)`, rồi gắn decorator `@app.route("/")` lên một hàm trả về một chuỗi như "Hello, World!". Lưu đoạn đó thành app.py và chạy bằng `flask run`; server phát triển in ra địa chỉ của chính nó ngay khi khởi động.
Điểm mạnh
- ✓Bề mặt nhỏ gọn: ví dụ khởi động nhanh đưa bạn tới một route chạy được chỉ trong bốn dòng code.
- ✓Werkzeug và Jinja là hai thư viện tách biệt, có tài liệu riêng để đọc trực tiếp, không phải phép thuật ẩn bên trong framework.
- ✓Không ép buộc ORM, hệ thống xác thực, hay cấu trúc thư mục nào, nên một service nhỏ không phải chống lại các quan điểm sẵn có của framework.
- ✓Được tổ chức Pallets duy trì, cùng tổ chức sở hữu hai thư viện mà Flask phụ thuộc vào.
- ✓Giấy phép BSD-3-Clause, không kèm điều khoản hạn chế nào.
Cân Nhắc Trước Khi Chọn Flask
- △Không có cấu trúc dự án bắt buộc nghĩa là ứng dụng lớn hơn phải tự bạn tổ chức lấy; README của Flask coi đây là một lựa chọn có chủ đích, không phải điều bị giấu đi.
- △Các dữ kiện có ở đây không đề cập đến cách triển khai, cấu hình, hay kiểm thử, nên bạn sẽ phải đọc riêng tài liệu của Werkzeug, Jinja, và từng extension thay vì có một cuốn sổ tay thống nhất.
- △Extension đến từ cộng đồng chứ không phải từ dự án lõi, và tài liệu này không mô tả quy trình kiểm định chất lượng nào cho chúng.
- △Bản thân bước cài đặt không nằm trong tài liệu ở đây, chỉ có cách chạy ứng dụng sau khi đã viết xong.
Framework Web Python Khác Đáng Cân Nhắc
Câu Hỏi Thường Gặp Về Flask
Flask được phát hành theo giấy phép BSD-3-Clause, theo repository GitHub của dự án.
WSGI là giao diện chuẩn giữa code Python và web server. Flask được mô tả là một framework gọn nhẹ xây trên giao diện đó, thay vì tự định nghĩa cách giao tiếp riêng với server.
Werkzeug và Jinja là hai thư viện tách biệt, cùng do tổ chức Pallets duy trì, mà Flask bọc trực tiếp: Werkzeug đảm nhiệm xử lý request và response ở tầng WSGI, còn Jinja đảm nhiệm template.
README của Flask nói rằng dự án hướng tới việc dễ bắt đầu nhưng vẫn có thể phát triển thành ứng dụng phức tạp hơn, dù tài liệu ở đây không nêu chi tiết cụ thể việc mở rộng đó diễn ra thế nào.
Flask không đòi hỏi một cấu trúc dự án hay tập phụ thuộc cụ thể nào. Nó gợi ý cách làm và để những lựa chọn thực tế, như dùng thư viện cơ sở dữ liệu hay hệ xác thực nào, cho nhà phát triển tự quyết.
Flask hướng người đóng góp tới một hướng dẫn đóng góp bằng văn bản, bao gồm cách báo issue, đề xuất tính năng, hỏi hay trả lời câu hỏi, và mở pull request.
Vấn đề Flask giải quyết
Viết trực tiếp trên WSGI nghĩa là tự tay xử lý routing, request, và response mà không có lớp template đi kèm. Các framework đầy đủ tính năng giải quyết việc đó, nhưng thường quyết định sẵn ORM, xác thực, và cấu trúc thư mục như một phần trọn gói. Flask nằm ở giữa: nó bọc Werkzeug cho phần xử lý ở tầng WSGI và Jinja cho template, rồi dừng lại ở đó, để việc chọn phụ thuộc và cấu trúc cho người xây dựng phía trên nó.
Trường hợp sử dụng tốt nhất
- •Xây dựng một API hay service nhỏ, nơi bạn muốn tự chọn ORM, cách xác thực, và cấu trúc thư mục thay vì kế thừa sẵn.
- •Làm prototype nhanh. Một route chạy được chỉ mất bốn dòng code.
- •Tìm hiểu cách WSGI, routing, và template kết hợp với nhau mà không bị các lớp trừu tượng của một framework lớn hơn che khuất.
- •Thêm một lớp HTTP mỏng phía trước một script hay thư viện Python có sẵn.
Ai nên dùng — và ai nên bỏ qua
Hãy thử Flask nếu bạn muốn xây một ứng dụng web hay API bằng Python, nơi bạn tự chọn ORM, xác thực, và cấu trúc thư mục, và không ngại đọc tài liệu riêng của Werkzeug và Jinja khi cần nhiều hơn những gì phần lõi cung cấp. Bỏ qua nếu bạn muốn một framework đã quyết định sẵn những điều đó cho bạn; đó là một đánh đổi khác với cách Flask được xây dựng.
Repo liên quan
Vẫn đang phân vân về flask?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về flask.
