Flask là gì? Hướng dẫn web framework Python cho người mới

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

  1. Cài đặt Python 3.9+ và Flask
  2. Xây Hello World và hiểu routing, URL parameters
  3. Tạo REST API CRUD cơ bản với request, jsonify
  4. Thêm database với Flask-SQLAlchemy và Flask-Migrate
  5. Xây app theo pattern Factory (create_app) để quản lý cấu hình
  6. Triển khai authentication với Flask-Login và Flask-WTF
  7. 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.

Tham khảo thêm

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

C++ là gì? Hướng dẫn toàn diện cho người mới bắt đầu

C++ là gì? Đây là ngôn ngữ lập trình bậc cao ra đời năm 1985 do Bjarne Stroustrup tạo ra, được xem là bản nâng cấp của ngôn ngữ C…

Xem thêm

GraphQL là gì? Hướng dẫn toàn diện cho lập trình viên

GraphQL là gì và tại sao nó đang trở thành lựa chọn thay thế REST API trong nhiều dự án web lớn? GraphQL là ngôn ngữ truy vấn và runtime…

Xem thêm

Kotlin là gì? Ngôn ngữ lập trình Android hiện đại

Kotlin là ngôn ngữ lập trình được JetBrains phát triển từ năm 2010, và hiện là ngôn ngữ chính thức cho phát triển ứng dụng Android. Với cú pháp gọn…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất