Giới thiệu
Django là một framework phát triển web mạnh mẽ dựa trên Python, nổi bật với việc tách biệt rõ ràng các thành phần trong ứng dụng. Điều này không chỉ giúp dễ dàng trong việc duy trì mã nguồn mà còn tạo điều kiện cho việc phát triển nhanh chóng và hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu sâu hơn về cấu trúc dự án, ứng dụng, mô hình, view, URL, template và migrations thông qua một ví dụ thực tế. Cuối cùng, bạn sẽ có một dự án hoạt động hoàn chỉnh với template được render chính xác.
Cấu trúc Dự án và Ứng dụng Django
Dự án vs Ứng dụng
- Dự án: Là cấu hình tổng thể của Django, chứa các thiết lập, routing URL và các cấu hình cần thiết cho ứng dụng.
- Ứng dụng: Là một module bên trong dự án, được thiết kế cho một mục đích cụ thể. Bạn có thể có nhiều ứng dụng trong một dự án. Ví dụ:
mysite/ # Dự án
├── manage.py
├── mysite/ # Thư mục cấu hình dự án
└── blog/ # Thư mục ứng dụng
Bạn có thể có nhiều ứng dụng như users, payments hay products dưới cùng một dự án.
Giải thích cấu trúc dự án
Khi bạn chạy lệnh django-admin startproject mysite, bạn sẽ nhận được cấu trúc sau:
mysite/
├── manage.py
└── mysite/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
Phân tích các file trong dự án:
- manage.py: Công cụ dòng lệnh để chạy server, tạo ứng dụng, áp dụng migrations, mở shell Django, v.v.
- settings.py: Cấu hình trung tâm (CSDL, ứng dụng đã cài đặt, middleware, khóa bảo mật).
- urls.py: Router URL chính; ánh xạ các đường dẫn tới các view.
- wsgi.py / asgi.py: Điểm nhập cho việc triển khai (được sử dụng bởi các server sản xuất).
Tạo ứng dụng đầu tiên
Chạy lệnh sau để tạo ứng dụng:
python manage.py startapp blog # (blog -> tên ứng dụng, bạn có thể thay đổi tên ứng dụng)
Điều này sẽ tạo ra cấu trúc thư mục sau:
blog/
├── admin.py
├── apps.py
├── migrations/
├── models.py
├── tests.py
└── views.py
Thêm ứng dụng mới tạo vào INSTALLED_APPS trong settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # thêm tên ứng dụng của bạn vào đây.
]
Thêm Views & URLs
Trong blog/views.py, thêm mã sau:
from django.shortcuts import render
def home(request):
return render(request, 'blog/home.html')
Tạo file blog/urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
Bao gồm URL của ứng dụng vào URL của dự án (mysite/urls):
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
Cấu hình Templates
Cấu trúc thư mục (Templates cấp ứng dụng):
blog/
├── templates/
└── blog/
└── home.html
Ví dụ file home.html:
<!DOCTYPE html>
<html>
<head>
<title>Trang Django đầu tiên của tôi</title>
</head>
<body>
<h1>Chào mừng đến với Blog của tôi!</h1>
<p>Trang này được cung cấp bởi các template của Django.</p>
</body>
</html>
Cấu hình settings.py:
Đảm bảo rằng APP_DIRS=True:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], # để trống cho template cấp ứng dụng
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Bây giờ render(request, 'blog/home.html') sẽ tìm thấy template.
Migrations & Cơ sở dữ liệu
Chạy lệnh:
python manage.py migrate
Chạy server
Chạy lệnh:
python manage.py runserver
Tóm tắt
Trong bài viết này, chúng ta đã:
- Hiểu được sự khác biệt giữa dự án và ứng dụng.
- Tìm hiểu về các file trong dự án và chức năng của chúng.
- Tạo một ứng dụng và thêm views, urls, và templates.
- Cấu hình chính xác
settings.pyvà render một template. - Chạy migrations và khởi động server.
Những lưu ý và mẹo thực hành
- Thực hành tốt: Luôn giữ mã nguồn rõ ràng và có tổ chức, sử dụng các tên gọi dễ hiểu cho các ứng dụng và mô-đun.
- Tránh sai lầm phổ biến: Không quên thêm ứng dụng vào
INSTALLED_APPS, điều này có thể gây ra lỗi không tìm thấy ứng dụng. - Mẹo hiệu suất: Sử dụng caching cho các view phức tạp để tăng tốc độ phản hồi.
Câu hỏi thường gặp (FAQ)
- Django có thể sử dụng cho ứng dụng nào?
Django có thể được sử dụng cho nhiều loại ứng dụng web khác nhau, từ hệ thống quản lý nội dung đến ứng dụng thương mại điện tử. - Mất bao lâu để học Django?
Thời gian học phụ thuộc vào kinh nghiệm lập trình của bạn. Đối với người mới bắt đầu, có thể mất từ vài tuần đến vài tháng để nắm vững nền tảng.
Kết luận
Django cung cấp một cách tiếp cận mạnh mẽ để phát triển web với cấu trúc rõ ràng và dễ duy trì. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cấu trúc dự án và ứng dụng Django. Hãy bắt đầu xây dựng những ứng dụng tuyệt vời với Django ngay hôm nay!