Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Giới thiệu Django trong Python
Django, một trong những framework web Python phổ biến nhất, đã giúp hàng ngàn nhà phát triển xây dựng các ứng dụng web mạnh mẽ và linh hoạt. Với kiến trúc mô hình MTV (Model-Template-View) cùng các tính năng mạnh mẽ như ORM (Object-Relational Mapping) và hệ thống giao diện quản trị tích hợp sẵn, Django là một lựa chọn lý tưởng cho việc phát triển các ứng dụng web từ nhỏ đến lớn.
Trong bài viết này, mình sẽ tìm hiểu sâu hơn về Django và cách sử dụng nó để xây dựng các ứng dụng web. Từ việc cài đặt và cấu hình môi trường phát triển, tạo dự án mới, đến việc chạy máy chủ phát triển và tạo các ứng dụng con, mình sẽ đi qua từng bước một để hiểu rõ về Django và làm thế nào để khai thác các tính năng của nó.
Hãy cùng bắt đầu cùng freetuts.net tìm hiểu các tính năng cũng như các kiến thức mới nhất của Django và tạo ra các ứng dụng web tuyệt vời!
Django là gì?
Django là một framework web mạnh mẽ được viết bằng Python, được phát triển bởi một nhóm các nhà phát triển web tại Django Software Foundation. Django được thiết kế để giúp nhà phát triển xây dựng các ứng dụng web phức tạp một cách nhanh chóng và dễ dàng bằng cách cung cấp một số tính năng và công cụ mạnh mẽ.
Bài viết này được đăng tại [free tuts .net]
Mục đích chính của Django trong phát triển web bao gồm:
-
Tăng tốc độ phát triển: Django cung cấp các công cụ và tính năng tích hợp sẵn giúp nhà phát triển giảm thiểu thời gian cần thiết để xây dựng các ứng dụng web từ đầu. Điều này bao gồm các tính năng như ORM (Object-Relational Mapping) để tương tác với cơ sở dữ liệu, hệ thống giao diện quản trị tự động và hỗ trợ cho các chức năng bảo mật.
-
Linh hoạt và mở rộng: Django được thiết kế để linh hoạt và dễ dàng mở rộng, cho phép nhà phát triển tùy chỉnh và mở rộng các tính năng theo nhu cầu cụ thể của dự án. Django cũng hỗ trợ việc kết hợp với các công nghệ và thư viện bên ngoài để cung cấp các tính năng phức tạp hơn nếu cần thiết.
-
Bảo mật: Django cung cấp các công cụ và tính năng để giúp bảo vệ ứng dụng web khỏi các lỗ hổng bảo mật phổ biến như CSRF (Cross-Site Request Forgery), SQL injection và XSS (Cross-Site Scripting).
-
Hỗ trợ cộng đồng: Django có một cộng đồng lớn và nhiệt tình, cung cấp tài liệu phong phú, các thư viện mở rộng và hỗ trợ từ cộng đồng giúp giải quyết các vấn đề và tối ưu hóa quy trình phát triển.
Tóm lại, Django là một framework web mạnh mẽ được thiết kế để giúp nhà phát triển xây dựng các ứng dụng web phức tạp một cách nhanh chóng, linh hoạt và an toàn.
Các tính năng của Django trong Python
Kiến trúc của Django
MVC (Model-View-Controller)
Định nghĩa và ý nghĩa của MVC trong Django: MVC là một mô hình kiến trúc phần mềm phổ biến, trong đó:
- Model (M): Đại diện cho dữ liệu và quản lý tương tác với cơ sở dữ liệu.
- View (V): Đại diện cho giao diện người dùng, hiển thị dữ liệu cho người dùng và nhận input từ họ.
- Controller (C): Làm trung gian giữa Model và View, xử lý logic ứng dụng và điều hướng các yêu cầu từ người dùng đến Model hoặc View tương ứng.
Sự phân chia công việc giữa Model, View và Controller trong Django:
- Model: Định nghĩa các class để tương tác với cơ sở dữ liệu, định nghĩa các truy vấn và thao tác với dữ liệu.
- View: Xử lý logic hiển thị dữ liệu cho người dùng và nhận input từ họ, render các template hoặc trả về các phản hồi HTTP.
- Controller: Trong Django, phần này thường được thay thế bằng các file urls.py và views.py, xác định các URL patterns và xử lý các yêu cầu HTTP từ người dùng.
MTV (Model-Template-View)
Sự khác biệt giữa MTV và MVC trong Django: MTV là một biến thể của MVC, trong đó:
- Model: Tương tự như trong MVC, đại diện cho dữ liệu và quản lý tương tác với cơ sở dữ liệu.
- Template: Tương tự như View trong MVC, đại diện cho giao diện người dùng, nhưng với cách tiếp cận khác biệt.
- View: Khác với View trong MVC, trong Django, phần này chỉ xử lý logic và gửi dữ liệu cho Template, không thực hiện trực tiếp việc hiển thị.
Cách Django triển khai kiến trúc MTV: Django sử dụng MTV để phân chia ứng dụng thành các phần khác nhau:
- Model: Định nghĩa trong file
models.py
của ứng dụng. - Template: Được đặt trong thư mục
templates
của ứng dụng hoặc project. - View: Được định nghĩa trong các file views.py của ứng dụng, xử lý logic và trả về dữ liệu cho Template.
Điều này giúp cho việc phát triển ứng dụng trở nên có tổ chức và dễ quản lý hơn trong Django.
Công dụng của Django
Mục đích sử dụng Django trong các dự án phát triển web
- Django được sử dụng để phát triển các ứng dụng web từ nhỏ đến lớn, bao gồm cả trang web tĩnh, các ứng dụng web động và các hệ thống quản trị nội dung (CMS).
- Django cung cấp một cơ sở cho việc phát triển ứng dụng web nhanh chóng, an toàn và hiệu quả.
Ưu điểm và nhược điểm khi sử dụng Django
Ưu điểm:
- Phát triển nhanh chóng: Django cung cấp các công cụ và thư viện tích hợp giúp phát triển nhanh chóng và dễ dàng.
- Bảo mật mạnh mẽ: Django có các tính năng bảo mật tích hợp sẵn để bảo vệ ứng dụng khỏi các cuộc tấn công phổ biến.
- Cộng đồng lớn: Django có một cộng đồng phát triển lớn, nơi bạn có thể tìm kiếm hỗ trợ và tài liệu phong phú.
- Tích hợp tốt: Django tích hợp tốt với các công nghệ phổ biến như HTML/CSS, JavaScript, và các cơ sở dữ liệu phổ biến như PostgreSQL, MySQL, SQLite.
Nhược điểm:
- Khả năng mở rộng: Trong một số trường hợp, việc mở rộng ứng dụng Django có thể gặp khó khăn so với một số framework khác.
- Độ phức tạp: Đối với các ứng dụng nhỏ, việc sử dụng Django có thể cảm thấy quá phức tạp và không cần thiết.
Tính năng của Django
Hệ thống routing linh hoạt
Django cung cấp một hệ thống routing mạnh mẽ, cho phép định tuyến các URL đến các hàm xử lý tương ứng.
Ví dụ
# urls.py from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello_world), ]
# views.py from django.http import HttpResponse def hello_world(request): return HttpResponse("Hello, world!")
ORM (Object-Relational Mapping)
Django cung cấp một ORM mạnh mẽ cho phép tương tác với cơ sở dữ liệu mà không cần viết các truy vấn SQL trực tiếp.
Ví dụ
# models.py from django.db import models class Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2)
Hỗ trợ giao diện quản trị
Django cung cấp một giao diện quản trị tích hợp sẵn cho việc quản lý dữ liệu trong cơ sở dữ liệu.
Ví dụ
python manage.py createsuperuser
Bảo mật mạnh mẽ
- Django cung cấp các tính năng bảo mật như X-Content-Type-Options, X-Frame-Options, CSRF protection, và XSS protection để bảo vệ ứng dụng khỏi các cuộc tấn công phổ biến.
Cài đặt và cấu hình Django trong Python
Chuẩn bị môi trường
Tạo môi trường ảo (Virtual Environment)
Môi trường ảo là một không gian làm việc cô lập, giúp bạn quản lý các dependency của dự án một cách độc lập với các dự án khác.
- Sử dụng lệnh sau để tạo một môi trường ảo mới
python -m venv myenv
Trong đó, myenv là tên của môi trường ảo bạn muốn tạo.
Cài đặt Python và pip
- Python là ngôn ngữ lập trình chính mà Django được viết bằng, và pip là trình quản lý package cho Python.
- Bạn có thể tải Python từ trang web chính thức của Python (https://www.python.org/) và cài đặt theo hướng dẫn cụ thể cho hệ điều hành của bạn.
- Sau khi cài đặt Python, pip sẽ được cài đặt tự động. Đảm bảo rằng pip đã được cài đặt bằng cách kiểm tra phiên bản:
pip --version
Nếu pip đã được cài đặt, phiên bản của nó sẽ được hiển thị.
Tính linh hoạt của môi trường ảo
- Khi bạn sử dụng môi trường ảo, bạn có thể cài đặt và quản lý các package một cách độc lập với hệ thống toàn cục.
- Điều này giúp tránh xung đột giữa các phiên bản của các package và tạo ra môi trường phát triển đồng nhất cho dự án Django của bạn.
Ví dụ về tạo một môi trường ảo và cài đặt Django trong môi trường này
Tạo môi trường ảo mới có tên là myenv
python -m venv myenv
Kích hoạt môi trường ảo trên Windows
myenv\Scripts\activate
Kích hoạt môi trường ảo trên MacOS và Linux
source myenv/bin/activate
Cài đặt Django bằng pip
pip install django
Sau khi các bước này được thực hiện, bạn đã có một môi trường ảo chứa Django và bạn có thể bắt đầu phát triển ứng dụng web với Django.
Cài đặt Django
Cài đặt Django bằng pip
- Sử dụng pip để cài đặt Django bằng lệnh sau
pip install django
Kiểm tra phiên bản Django sau khi cài đặt
- Sau khi cài đặt xong, bạn có thể kiểm tra phiên bản của Django bằng lệnh:
python -m django --version
Cấu hình môi trường và cài đặt Django
-
Đầu tiên, tạo một môi trường ảo mới bằng cách chạy lệnh sau:
python -m venv myenv
Kích hoạt môi trường ảo trên Windows
myenv\Scripts\activate
Kích hoạt môi trường ảo trên MacOS và Linux:
source myenv/bin/activate
Sau khi môi trường ảo được kích hoạt, sử dụng pip để cài đặt Django:
pip install django
Kiểm tra phiên bản Django sau khi cài đặt:
python -m django --version
Bây giờ bạn đã cài đặt và cấu hình xong Django trong môi trường ảo của mình, bạn có thể bắt đầu phát triển ứng dụng web với Django.
Bắt đầu với Django trong Python
Tạo một dự án Django mới
Sử dụng django-admin
- Để tạo một dự án Django mới, bạn có thể sử dụng lệnh sau
django-admin startproject myproject
Trong đó, "myproject" là tên của dự án bạn muốn tạo. Sau khi chạy lệnh này, Django sẽ tạo ra một thư mục mới có tên "myproject", chứa các file và thư mục cần thiết cho dự án.
Tìm hiểu cấu trúc dự án Django
Sau khi tạo dự án mới, bạn có thể khám phá cấu trúc thư mục và các file quan trọng bên trong dự án:
myproject/:
Thư mục gốc của dự án.- manage.py: File chính để quản lý dự án Django. Bạn sử dụng tệp này để chạy các lệnh quản lý, như chạy server phát triển, tạo ứng dụng mới, và thực hiện các tác vụ khác.
- myproject/: Thư mục chứa các file và thư mục cấu hình cho dự án Django.
- __init__.py: Một file rỗng chỉ để Python nhận dạng thư mục này như một package.
- settings.py: File cấu hình cho dự án Django, chứa các thiết lập như cài đặt cơ sở dữ liệu, cài đặt ứng dụng, và các thiết lập khác của dự án.
- urls.py: File định tuyến cho dự án Django, chứa các đường dẫn URL của ứng dụng.
- wsgi.py: File cho phép dự án Django được triển khai dưới WSGI (Web Server Gateway Interface) cho các máy chủ web như Apache hoặc Nginx.
Bằng cách thực hiện các bước này, bạn đã tạo một dự án Django mới và hiểu được cấu trúc thư mục và các filequan trọng trong dự án.
Chạy máy chủ phát triển Django
Khởi động máy chủ phát triển:
- Sử dụng lệnh sau để khởi động máy chủ phát triển Django
python manage.py runserver
Lệnh này sẽ bắt đầu máy chủ phát triển Django trên cổng mặc định (thường là cổng 8000). Bạn có thể thêm cờ --port để chỉ định cổng khác nếu cần thiết.
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). ... Django version 4.1.1, using settings 'django_project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Kiểm tra trạng thái kết nối
-
Mở trình duyệt web và nhập URL sau:
http://localhost:8000
Nếu máy chủ phát triển đã được khởi động thành công, bạn sẽ thấy trang chào mừng Django mặc định. Điều này chỉ ra rằng bạn đã cài đặt và khởi động máy chủ phát triển Django thành công.
Trong file urls.py
có một đường dẫn mặc định liên kết với đường dẫn /admin
và chế độ xem admin.site.urls:
from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
Để truy cập trang quản trị, hãy vào địa chỉ URL sau:
http://127.0.0.1:8000/admin
Điều này sẽ hiển thị một trang đăng nhập.
Bằng cách thực hiện các bước này, bạn đã có thể khởi động và kiểm tra trạng thái kết nối của máy chủ phát triển Django.
Tạo ứng dụng Django
Sử dụng manage.py
- Để tạo một ứng dụng Django mới, sử dụng lệnh sau
python manage.py startapp <tên_ứng_dụng>
Ví dụ:
python manage.py startapp blog
Sau khi chạy lệnh này, Django sẽ tạo ra một thư mục mới với tên của ứng dụng bạn đã chỉ định (trong trường hợp này là "blog").
Xem cấu trúc thư mục của ứng dụng mới
Sau khi tạo ứng dụng mới, bạn có thể xem cấu trúc thư mục của nó. Thông thường, một ứng dụng Django sẽ có cấu trúc thư mục như sau:
migrations/:
Thư mục chứa các file migration để quản lý cơ sở dữ liệu.models.py:
File này chứa các định nghĩa cho các model dữ liệu của ứng dụng.views.py
: File này chứa các hàm xử lý logic của ứng dụng.urls.py:
File này định nghĩa các URL routing cho ứng dụng.admin.py:
File này được sử dụng để đăng ký các model với trang quản trị của Django.
Với việc xem qua cấu trúc thư mục này, bạn có thể bắt đầu phát triển ứng dụng Django của mình.
Dừng máy chủ phát triển
Để dừng máy chủ phát triển Django, bạn có thể sử dụng tổ hợp phím Ctrl + C trong cửa sổ terminal mà bạn đã chạy máy chủ. Bạn sẽ thấy một thông báo xác nhận yêu cầu tắt máy chủ và sau đó, máy chủ sẽ dừng hoạt động.
Sau khi bạn nhấn Ctrl + C, máy chủ sẽ dừng và bạn sẽ trở lại dòng lệnh trong terminal. Điều này chỉ đơn giản là kỹ thuật dừng một tiến trình trong hệ thống Unix/Linux.
Điều này kết thúc quá trình phát triển với Django. Bạn có thể tiếp tục phát triển ứng dụng của mình hoặc khám phá các tính năng khác của Django.
Kết bài
Trong bài viết này, mình đã tìm hiểu về Django - một framework web mạnh mẽ trong Python. Django không chỉ giúp bạn nhanh chóng phát triển các ứng dụng web mà còn cung cấp một cấu trúc dự án rõ ràng và một loạt các tính năng hữu ích.
Mình cũng đã đã tìm hiểu kiến trúc của Django, bao gồm cả mô hình MVT (Model-View-Template) và cách thức hoạt động của nó. Bằng cách sử dụng các lệnh django-admin và manage.py, freetuts.net đã tạo ra một dự án mới và một ứng dụng trong Django.
Hy vọng rằng thông qua bài viết này, bạn đã có cái nhìn tổng quan về Django và sẽ sẵn lòng tìm hiểu thêm về framework này trong các dự án web của mình.