Sự khác biệt giữa Dự án và Ứng dụng trong Django

Sự khác biệt giữa dự án và ứng dụng trong Django

Chia sẻ kiến thức 31/05/2023

Cùng FUNiX tìm hiểu về sự khác biệt giữa vai trò và chức năng của các dự án và ứng dụng trong Django.

Trong Django, bạn có thể dùng hai thành phần chính để tạo một ứng dụng web, đó là ứng dụng (app) và dự án (project). Các lập trình viên đôi khi sử dụng các thuật ngữ này thay thế cho nhau, mặc dù chúng có ý nghĩa và chức năng riêng trong khung web Django.

Hiểu về các dự án Django

Trong Django, dự án là nơi chứa (container) cấp cao nhất cho ứng dụng web. Dự án chứa các cấu hình cho ứng dụng web và một hoặc nhiều ứng dụng, với mỗi ứng dụng cung cấp một hoặc một bộ tính năng cụ thể cho ứng dụng web. Nó cũng chứa các thành phần được chia sẻ giữa các ứng dụng khác nhau của nó. Trong dự án Django, bạn có thể tìm thấy các công cụ và tiện ích giúp bạn dễ dàng quản lý ứng dụng web của mình, ví dụ như máy chủ phát triển Django và tiện ích dòng lệnh Django.

 

Các thành phần của dự án Django

Dự án Django thường chứa cấu hình ứng dụng web của bạn cũng như các ứng dụng khác nhau. Khi bạn tạo một dự án mới, Django tự động tạo các tệp chứa các cấu hình này. Các thành phần trong dự án Django là:

  1. Settings (Cài đặt): Mô-đun cài đặt chứa các cấu hình cần thiết cho dự án và các ứng dụng riêng lẻ trong dự án. Mô-đun này chủ yếu chứa các tùy chọn cấu hình, ví dụ như kết nối cơ sở dữ liệu, ứng dụng đã cài đặt, phần mềm trung gian, máy chủ (host) được cho phép và các cấu hình khác cần thiết để ứng dụng web hoạt động.
  2. URL: Mô-đun URL xác định mẫu URL cho ứng dụng. Mỗi mẫu URL trong dự án có thể chỉ tới một mẫu URL khác trong ứng dụng hoặc trực tiếp tới chức năng xem (view function) có vai trò xử lý yêu cầu cho một URL cụ thể. Cho dù mẫu URL chỉ tới chức năng xem hay mẫu URL khác trong ứng dụng của bạn, thì mục tiêu cuối cùng là “chỉ đường” (map) cho nó tới chế độ xem để xử lý yêu cầu một cách hiệu quả.
  3. WSGI: Mô-đun WSGI (Web Server Gateway Interface, hay Giao diện cổng máy chủ web) là tiêu chuẩn Python cho các máy chủ và ứng dụng web. Mô-đun nay giúp Django có thể chạy trên nhiều máy chủ khác nhau.
  4. ASGI: Mô-đun ASGI (Asynchronous Server Gateway Interface, hay Giao diện cổng máy chủ không đồng bộ) xử lý các yêu cầu không đồng bộ ví dụ như kết nối WebSockets. ASGI thường được dùng cho các máy chủ web không đồng bộ để giao tiếp với các ứng dụng web Python.
  5. Các thành phần khác: Đôi khi, bạn sẽ cần thêm các thành phần của riêng mình vào dự án Django, tùy thuộc vào yêu cầu của ứng dụng, ví dụ như tệp tĩnh, mẫu, tệp phương tiện và lệnh quản lý tùy chỉnh.
 

Cách tạo một dự án Django

Bạn nên sử dụng tiện ích dòng lệnh django-admin để tạo dự án Django. Cách thực hiện như sau:

  1. Trong giao diện dòng lệnh, hãy đi đến thư mục mà bạn muốn tạo dự án Django.
  2. Cài đặt Django với trình quản lý gói pip.
    pip install django
  3. Nhập và chạy lệnh sau:
    django-admin startproject <your_project_name>

Lệnh trên sẽ tạo một thư mục như sau:

 

Bạn sẽ thấy tên dự án của bạn xuất hiện hai lần. Nếu bạn muốn loại bỏ bớt, bạn có thể thêm một dấu chấm khi bạn chạy lệnh startproject của mình như sau:

django-admin startproject <your_project_name> .

Bây giờ, cấu trúc dự án của bạn sẽ trông như ảnh dưới:

 

Vậy là bạn đã tạo thành công một Dự án Django. Tệp manage.py được tạo trong dự án rất quan trọng để tương tác với dự án Django của bạn.

Hiểu về ứng dụng Django

Mục đích của ứng dụng (app) là cung cấp cho dự án Django của bạn tính năng cụ thể. Một ứng dụng giúp bạn sắp xếp cơ sở code của mình bằng cách chia các chức năng của dự án thành các phần nhỏ hơn.

 

Ví dụ: trong một dự án blog, bạn sẽ có một ứng dụng dành riêng cho việc xác thực và ủy quyền và một ứng dụng khác dành riêng cho các bài đăng trên blog. Bạn có thể tạo nhiều ứng dụng khác nhau dựa trên nhu cầu cụ thể của dự án.

Các thành phần của ứng dụng Django

Một ứng dụng Django bao gồm các mô-đun liên quan đến dự án, nghĩa là đến một tính năng cụ thể trên trang web của bạn. Django tự động tạo các tệp cần thiết khi bạn tạo một ứng dụng, bao gồm:

  1. views.py: Tệp này chứa tất cả logic cần thiết để nhận yêu cầu và gửi phản hồi. Bên cạnh đó, nó xác định mẫu HTML nào sẽ hiển thị dựa trên hành động của người dùng trên trang web.
  2. models.py: Mô-đun này thiết lập cấu trúc dữ liệu của ứng dụng và xác định cách cơ sở dữ liệu sẽ lưu trữ nó. Nó sử dụng ORM (Object-Relational Mapping, hay Ánh xạ quan hệ đối tượng) của Django để xác định dữ liệu. Nó xác định các mối quan hệ cơ sở dữ liệu khác nhau trong Django.
  3. admin.py: Mô-đun admin xác định giao diện quản trị của ứng dụng Django. Bạn nên đăng ký các model của mình bên trong tệp quản trị. Nếu bạn cần các chức năng quản trị bổ sung ngoài các chức năng do Django cung cấp, bạn có thể xác định chế độ xem tùy chỉnh cho giao diện quản trị trong mô-đun này.
  4. urls.py: Tệp này xác định các mẫu URL riêng cho một ứng dụng Django cụ thể. Django đôi khi không tự động tạo tệp này. Trong trường hợp này, bạn có thể tạo nó theo cách thủ công trong thư mục ứng dụng của mình.
 

Ngoài ra, Django tạo một số thành phần khác như apps.py và tests.py để xác định cấu hình ứng dụng của bạn và cho phép viết các bài kiểm tra đơn vị (unit test) tương ứng.

Cách tạo ứng dụng Django

Bạn phải tạo một dự án trước khi tạo một ứng dụng. Sau khi bạn tạo dự án, hãy đi đến thư mục chứa tệp manage.py và chạy lệnh sau trong terminal:

python manage.py startproject <app_name>

Lệnh trên sẽ tạo cấu trúc thư mục như sau trong cùng cấp độ thư mục với dự án của bạn:

Sự khác biệt giữa ứng dụng và dự án trong Django

Có một số khác biệt rõ rệt giữa dự án và ứng dụng trong Django, trong đó bao gồm:

Khả năng sử dụng lại code

Trong Django, ứng dụng là một thành phần có thể tái sử dụng nhiều lần trong ứng dụng web của bạn. Có nghĩa là nếu bạn có một ứng dụng xử lý xác thực người dùng cho một dự án, thì bạn có thể dùng lại ứng dụng đó trong một dự án khác mà không cần thay đổi hoặc thay đổi rất ít. Trái lại, một dự án không thể tái sử dụng. Khi bạn tạo một dự án cho một ứng dụng web cụ thể, bạn không thể dùng nó cho một ứng dụng khác.

Phạm vi hoạt động

Dự án hoạt động ở cấp cao hơn ứng dụng vì nó chịu trách nhiệm quản lý và cấu hình tổng thể trang web. Trái lại, một ứng dụng chỉ chịu trách nhiệm về một tính năng hoặc chức năng cụ thể của trang web. 

 

Cấu trúc thư mục

Sự khác biệt rõ ràng nhất giữa ứng dụng và dự án là cấu trúc thư mục . Một dự án thường bao gồm các cài đặt và tệp cấu hình chịu trách nhiệm về trạng thái hoạt động của trang web.

Một ứng dụng tuân theo kiến ​​trúc MVT của Django và chỉ chứa các tệp và cấu hình chịu trách nhiệm về trạng thái hoạt động của một tính năng cụ thể trên trang web.

Dự án và ứng dụng hoạt động cùng nhau để tạo một ứng dụng web tốt

Dự án và ứng dụng được sử dụng để mang đến cho bạn trải nghiệm liền mạch khi xây dựng ứng dụng web của mình. Bạn có thể kết hợp cả thành phần dự án và ứng dụng để xây dựng và tùy chỉnh ứng dụng web. 

Tìm hiểu các khóa học lập trình của FUNiX tại đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/difference-between-app-and-project-in-django/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!