Thời gian đọc: 5 phút
MVT (Model-View-Template) là một kiến trúc được Django sử dụng để tổ chức các thành phần của ứng dụng web. Nó tương tự như mô hình MVC (Model-View-Controller) nhưng với một số điều chỉnh nhỏ. Trong MVT, Django quản lý một số khía cạnh của ứng dụng thay cho bạn, điều này giúp tăng tốc quá trình phát triển. Cùng tìm hiểu chi tiết về ba thành phần chính của kiến trúc MVT trong Django:
Model đại diện cho các cấu trúc dữ liệu cơ bản trong ứng dụng Django. Nó tương ứng với các bảng trong cơ sở dữ liệu và chứa các trường dữ liệu, các hành vi của dữ liệu. Models không chỉ định cách dữ liệu được hiển thị mà tập trung vào cách dữ liệu được lưu trữ và thao tác. Django cung cấp sẵn ORM (Object Relational Mapping) giúp việc tương tác với cơ sở dữ liệu trở nên dễ dàng mà không cần viết truy vấn SQL.
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
Trong ví dụ này, model Article
đại diện cho một bài viết với các thuộc tính như tiêu đề, nội dung, và ngày xuất bản.
View trong Django chịu trách nhiệm xử lý logic của ứng dụng, nhận các yêu cầu từ người dùng và trả về các phản hồi tương ứng. Khác với trong MVC, trong Django, View thường không liên quan đến việc hiển thị giao diện (template), mà tập trung vào việc xử lý dữ liệu và gửi đến template để hiển thị.
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'article_list.html', {'articles': articles})
Trong ví dụ này, view article_list
lấy tất cả các bài viết từ cơ sở dữ liệu và chuyển chúng đến template article_list.html
để hiển thị.
Template chịu trách nhiệm hiển thị dữ liệu cho người dùng. Template là các file HTML với sự hỗ trợ của cú pháp template engine của Django để hiển thị dữ liệu động. Điều này giúp tách biệt hoàn toàn giữa logic và giao diện của ứng dụng.
<!DOCTYPE html>
<html>
<head>
<title>Articles</title>
</head>
<body>
<h1>Article List</h1>
<ul>
{% for article in articles %}
<li>{{ article.title }} - {{ article.published_date }}</li>
{% endfor %}
</ul>
</body>
</html>
Trong ví dụ này, template article_list.html
hiển thị danh sách bài viết bằng cách sử dụng cú pháp của Django template engine.
MVT trong Django là một kiến trúc mạnh mẽ giúp tăng tốc quá trình phát triển web, với sự tách biệt rõ ràng giữa xử lý dữ liệu, logic và hiển thị giao diện. Nếu bạn quen thuộc với MVC, thì việc hiểu MVT sẽ trở nên dễ dàng hơn vì chúng chỉ khác nhau một chút về cách quản lý các thành phần.