
Flask là gì? Hướng dẫn web framework Python nhẹ nhất cho người mới
Flask là web framework Python siêu nhẹ (microframework), được tạo bởi Armin Ronacher thuộc dự án Pocoo. Với điểm mạnh là đơn giản, linh hoạt và không ép buộc cấu trúc, Flask lý tưởng cho người mới bắt đầu muốn xây dựng REST API, web app nhỏ hoặc prototype nhanh. Phiên bản hiện tại là Flask 3.1.3, yêu cầu Python 3.9 trở lên.
Flask hoạt động như thế nào?
Flask xây dựng trên hai thư viện cốt lõi: Werkzeug (xử lý HTTP, routing, WSGI) và Jinja2 (template engine để render HTML). Mọi thứ khác bạn muốn dùng (database, forms, authentication) đều thông qua extension, không bắt buộc.
Một ứng dụng Flask tối thiểu chỉ cần 5 dòng code. Không cần cấu hình phức tạp, không cần file XML hay decorator rườm rà.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Xin chào từ Flask!"
if __name__ == "__main__":
app.run(debug=True)
Đoạn code trên tạo một web server chạy trên localhost:5000, mỗi request đến “/” đều trả về “Xin chào từ Flask!”. Dễ dàng mở rộng thành REST API bằng cách thêm route mới.
Tạo REST API với Flask
Ví dụ API quản lý công việc (Todo) với Flask-RESTful:
from flask import Flask, jsonify, request
app = Flask(__name__)
todos = [{"id": 1, "title": "Học Flask", "done": False}]
@app.route("/todos", methods=["GET"])
def get_todos():
return jsonify(todos)
@app.route("/todos", methods=["POST"])
def create_todo():
data = request.get_json()
todo = {"id": len(todos)+1, "title": data["title"], "done": False}
todos.append(todo)
return jsonify(todo), 201
@app.route("/todos/<int:id>", methods=["PUT"])
def update_todo(id):
todo = next((t for t in todos if t["id"] == id), None)
if todo:
todo.update(request.get_json())
return jsonify(todo)
return {"error": "Not found"}, 404
Flask vs Django: Nên chọn cái nào?
| Tiêu chí | Flask | Django |
|---|---|---|
| Triết lý | Microframework (chọn cái cần dùng) | Batteries-included (đầy đủ sẵn) |
| ORM | Không có sẵn, dùng SQLAlchemy | Django ORM tích hợp sẵn |
| Admin panel | Flask-Admin (extension) | Django Admin tích hợp sẵn |
| Phù hợp cho | API, microservices, prototype nhỏ | Web app lớn, CMS, e-commerce |
| Học curve | Rất thấp | Trung bình |
| Tốc độ dev | Nhanh cho nhỏ, tự quản lý lớn | Nhanh ở mọi quy mô |
Chọn Flask khi xây dựng API, chatbot, tool nội bộ hoặc muốn hiểu rõ từng thành phần. Chọn Django khi cần CMS, admin dashboard hoặc ứng dụng lớn có nhiều module.
Flask vs FastAPI: Sự khác biệt cốt lõi
FastAPI chạy trên ASGI (async), tự động tạo tài liệu OpenAPI, và nhanh hơn Flask 2-5 lần cho I/O-bound workload. Tuy nhiên, Flask có hệ sinh thái extensions trưởng thành hơn, hỗ trợ server-rendered templates tốt hơn, và đơn giản hơn cho người mới. FastAPI thừa nhận Flask là nguồn cảm hứng trong tài liệu chính thức.
Nếu dự án cần async/await native hoặc API docs tự động: FastAPI. Nếu cần templates, extensions đa dạng hoặc đơn giản tuyệt đối: Flask.
Hệ sinh thái Flask extensions
- Flask-SQLAlchemy 3.1.1: ORM tích hợp SQLAlchemy
- Flask-Migrate: Database migration (Alembic wrapper)
- Flask-RESTful 0.3.10: Tạo REST API theo RESTful pattern
- Flask-Login: Quản lý authentication và session
- Flask-WTF: Form handling với WTForms
- Flask-Caching: Cache layer (Redis, Memcached)
- Flask-Limiter: Rate limiting cho API
- Flask-SocketIO: WebSocket real-time
Danh sách công ty sử dụng Flask
Flask được sử dụng rộng rãi trong sản phẩm thật: Pinterest, LinkedIn (được xác nhận trên Wikipedia), Apache Superset (dùng Flask-AppBuilder), Plotly Dash, CTFd (nền tảng CTF), SimpleLogin (bảo mật email alias), Uber (dịch interna Clay), Lyft (Flask-RESTful).
Cài đặt và bắt đầu
pip install flask
flask --version
# Flask 3.1.x
# Werkzeug 3.1.x
# Python 3.9+
Sau khi cài đặt, chạy flask run trong thư mục chứa file app.py hoặc dùng app.run() trực tiếp. Với debug mode, Flask tự reload khi bạn sửa code và hiển thị lỗi chi tiết trên trình duyệt, giúp quá trình phát triển nhanh hơn rất nhiều.
GitHub Flask hiện có hơn 72.2k star, một minh chứng cho sự phổ biến trong cộng đồng Python toàn cầu.
Lộ trình học Flask cho người mới
- Cài đặt Python 3.9+ và Flask
- Xây Hello World và hiểu routing, URL parameters
- Tạo REST API CRUD cơ bản với request, jsonify
- Thêm database với Flask-SQLAlchemy và Flask-Migrate
- Xây app theo pattern Factory (create_app) để quản lý cấu hình
- Triển khai authentication với Flask-Login và Flask-WTF
- Deploy lên Docker hoặc VPS với Gunicorn (WSGI server)
Flask phù hợp nhất khi bạn muốn vừa học vừa xây dựng sản phẩm thật. Không cần học cả framework khổng lồ, chỉ cần biết đúng cái mình dùng. GitHub Flask hiện có hơn 72.2k star, một minh chứng cho sự phổ biến trong cộng đồng Python toàn cầu. Hầu hết dự án Flask mở trên GitHub đều có thể đọc và học trực tiếp từ source code.
