Mô Hình MVC Trong Python: Hướng Dẫn Chi Tiết

Đăng ngày: 20/06/2026 • Tác giả: Quản trị viên
Mô Hình MVC Trong Python: Hướng Dẫn Chi Tiết

Mô Hình MVC Trong Python: Hướng Dẫn Chi Tiết

Sau khi hiểu về nguyên tắc SOLID, chúng ta tiếp tục với mô hình MVC (Model-View-Controller) – một trong những kiến trúc phổ biến trong lập trình phần mềm, đặc biệt là phát triển ứng dụng web và desktop.

📌 Nội dung chính:

1️⃣ MVC là gì?
2️⃣ Tại sao nên sử dụng MVC?
3️⃣ Cách triển khai MVC trong Python
4️⃣ Ví dụ MVC với Flask

1. MVC Là Gì?

MVC (Model-View-Controller) là mô hình kiến trúc giúp tổ chức code thành 3 thành phần chính:

  • Model (M) – Xử lý dữ liệu, giao tiếp với cơ sở dữ liệu.
  • View (V) – Giao diện hiển thị cho người dùng.
  • Controller (C) – Điều khiển luồng xử lý giữa Model và View.

💡 Ví dụ đơn giản:

  • Facebook: Khi bạn đăng status:
    • Model: Lưu status vào database.
    • View: Hiển thị status lên trang cá nhân.
    • Controller: Điều hướng request giữa người dùng và hệ thống.

2. Tại Sao Nên Sử Dụng MVC?

Dễ bảo trì – Code được tách biệt giúp dễ sửa đổi và mở rộng.
Tái sử dụng cao – Dữ liệu (Model) có thể tái sử dụng với nhiều View khác nhau.
Tổ chức code rõ ràng – Giúp quản lý dự án lớn hiệu quả hơn.

3. Cách Triển Khai MVC Trong Python

3.1. Tạo Cấu Trúc Thư Mục MVC

Một dự án theo mô hình MVC thường có cấu trúc như sau:

my_project/
│── models/
│   ├── user_model.py
│── views/
│   ├── user_view.py
│── controllers/
│   ├── user_controller.py
│── main.py

💡 Giải thích:

  • models/ – Chứa các lớp xử lý dữ liệu.
  • views/ – Chứa giao diện hoặc output.
  • controllers/ – Xử lý logic điều hướng.
  • main.py – Chạy ứng dụng.

3.2. Triển Khai MVC Cơ Bản

📌 Bước 1: Tạo Model (Xử lý dữ liệu)

# models/user_model.py
class User:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def get_info(self):
        return f"{self.name} - {self.age} tuổi"

📌 Bước 2: Tạo View (Hiển thị giao diện)

# views/user_view.py
class UserView:
    def show_user(self, user_info):
        print(f"Thông tin người dùng: {user_info}")

📌 Bước 3: Tạo Controller (Điều hướng dữ liệu)

# controllers/user_controller.py
from models.user_model import User
from views.user_view import UserView

class UserController:
    def __init__(self, name, age):
        self.user = User(name, age)
        self.view = UserView()

    def display_user(self):
        user_info = self.user.get_info()
        self.view.show_user(user_info)

📌 Bước 4: Chạy Ứng Dụng (main.py)

# main.py
from controllers.user_controller import UserController

if __name__ == "__main__":
    user_controller = UserController("Thảo", 21)
    user_controller.display_user()

✅ Chạy ứng dụng:

$ python main.py
Thông tin người dùng: Thảo - 21 tuổi

💡 Lợi ích:
✔ Code rõ ràng, dễ bảo trì.
✔ Tách biệt dữ liệu và giao diện, dễ mở rộng.

4. Ví Dụ MVC Với Flask

Flask là một framework phổ biến để phát triển web với Python. Chúng ta sẽ áp dụng MVC vào một ứng dụng Flask đơn giản.

4.1. Cài Đặt Flask

pip install flask

4.2. Cấu Trúc Thư Mục MVC Cho Flask

flask_app/
│── models/
│   ├── database.py
│── views/
│   ├── templates/
│       ├── index.html
│── controllers/
│   ├── routes.py
│── app.py

💡 Giải thích:

  • models/ – Chứa logic xử lý dữ liệu (ví dụ: SQLite, SQLAlchemy).
  • views/ – Chứa template HTML.
  • controllers/ – Điều hướng request giữa người dùng và model.
  • app.py – Chạy ứng dụng Flask.

4.3. Tạo Model (Xử lý dữ liệu)

# models/database.py
users = [
    {"id": 1, "name": "Thảo", "age": 21},
    {"id": 2, "name": "Hoàng", "age": 22}
]

def get_users():
    return users

4.4. Tạo View (Giao diện HTML)

<!-- views/templates/index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Danh sách người dùng</title>
</head>
<body>
    <h1>Danh sách người dùng</h1>
    <ul>
        {% for user in users %}
            <li>{{ user.name }} - {{ user.age }} tuổi</li>
        {% endfor %}
    </ul>
</body>
</html>

4.5. Tạo Controller (Điều hướng request)

# controllers/routes.py
from flask import Flask, render_template
from models.database import get_users

app = Flask(__name__)

@app.route("/")
def index():
    users = get_users()
    return render_template("index.html", users=users)

4.6. Chạy Ứng Dụng Flask

# app.py
from controllers.routes import app

if __name__ == "__main__":
    app.run(debug=True)

✅ Chạy ứng dụng:

$ python app.py
 * Running on http://127.0.0.1:5000/

🔗 Mở trình duyệt: http://127.0.0.1:5000/

💡 Kết quả: Danh sách người dùng hiển thị trên web.

5. Tổng Kết

✔ MVC giúp tách biệt dữ liệu, giao diện và logic điều khiển.
✔ Dễ bảo trì và mở rộng khi phát triển dự án lớn.
✔ Áp dụng MVC vào Flask để phát triển ứng dụng web.

💡 Bạn có câu hỏi gì về MVC? Hãy để lại bình luận bên dưới! 🚀

 

Bài viết liên quan