it-swarm-vi.tech

Khi nào nên tạo một ứng dụng mới (với startapp) trong Django?

Tôi đã loay hoay cho việc này, nhưng tôi vẫn gặp rắc rối liên quan đến những gì Django định nghĩa là "ứng dụng". 

Tôi có nên tạo một ứng dụng mới cho từng phần chức năng trong một trang web, mặc dù nó sử dụng các mô hình từ dự án chính? 

Các bạn có quy tắc tốt khi nào nên tách một ứng dụng mới và khi nào nên giữ chức năng cùng với "dự án chính" hoặc các ứng dụng khác không?

79
Håkan

James Bennett có một bộ slide tuyệt vời về cách tổ chức các ứng dụng có thể sử dụng lại trong Django.

39
Antti Rasinen

Tôi thích nghĩ về các ứng dụng Django như các mô-đun hoặc các thành phần có thể tái sử dụng hơn là "các ứng dụng". 

Điều này giúp tôi gói gọn và tách rời các tính năng nhất định với nhau, cải thiện khả năng sử dụng lại nếu tôi quyết định chia sẻ một "ứng dụng" cụ thể với cộng đồng nói chung và khả năng duy trì.

Cách tiếp cận chung của tôi là kết hợp các tính năng hoặc bộ tính năng cụ thể vào "ứng dụng" như thể tôi sẽ phát hành chúng công khai. Phần khó ở đây là tìm ra mỗi thùng lớn như thế nào. 

Một mẹo hay mà tôi sử dụng là tưởng tượng các ứng dụng của tôi sẽ được sử dụng như thế nào nếu chúng được phát hành công khai. Điều này thường khuyến khích tôi thu nhỏ các thùng và xác định rõ hơn "mục đích" của nó.

18
blahspam

Tôi có xu hướng tạo các ứng dụng mới cho từng bộ mô hình riêng biệt. ví dụ.:

  • Thông tin người dùng
  • Bài đăng trên diễn đàn
  • Bài đăng trên blog
11
pobk

Dưới đây là bản trình bày cập nhật vào ngày 6 tháng 9 năm 2008.

DjangoCon 2008: Ứng dụng tái sử dụng @ 7: 53

Trượt: Tái sử dụng_apps.pdf

Lấy từ slide

Đây có nên là ứng dụng riêng của nó?

  • Có phải nó hoàn toàn không liên quan đến trọng tâm của ứng dụng?
  • Nó có trực giao với bất cứ điều gì khác mà tôi làm không?
  • Tôi sẽ cần chức năng tương tự trên các trang web khác?

Nếu bất kỳ trong số họ là "Có"? Sau đó, tốt nhất để phá vỡ nó thành một ứng dụng riêng biệt.

11
Yeo

Quy tắc tôi tuân theo là nó phải là một ứng dụng mới nếu tôi muốn sử dụng lại chức năng trong một dự án khác.

Nếu nó cần sự hiểu biết sâu sắc về các mô hình trong dự án của bạn, có lẽ sẽ gắn kết hơn với mô hình đó.

5
Ryan

Một 'ứng dụng' có thể là nhiều thứ khác nhau, tất cả thực sự bắt nguồn từ hương vị. Ví dụ: giả sử bạn đang xây dựng một blog. Ứng dụng của bạn có thể là toàn bộ blog hoặc bạn có thể có ứng dụng 'quản trị viên', ứng dụng 'trang web' cho tất cả các chế độ xem công khai, ứng dụng 'rss', ứng dụng 'dịch vụ' để nhà phát triển có thể giao tiếp với blog trong cách riêng, vv.

Cá nhân tôi sẽ tự biến blog thành ứng dụng và phá vỡ chức năng bên trong nó. Blog sau đó có thể được sử dụng lại khá dễ dàng trong các trang web khác.

Điều thú vị về Django là nó sẽ nhận ra bất kỳ tệp mô hình nào trong bất kỳ cấp độ nào của cây thư mục của bạn là một tệp chứa các mô hình Django. Vì vậy, việc chia nhỏ chức năng của bạn thành các 'ứng dụng phụ' nhỏ hơn trong chính 'ứng dụng' sẽ không gây khó khăn gì nữa.

1
willurd

Hai câu trả lời hay nhất cho câu hỏi này tôi đã tìm thấy trên web là:

  1. Trò chuyện ứng dụng tái sử dụng ( slide ) ( video ) cũng được đề cập trong các câu trả lời khác. Bennett, tác giả và người đóng góp Django, thường xuyên xuất bản ứng dụng cho người khác sử dụng và có quan điểm mạnh mẽ đối với nhiều ứng dụng nhỏ.
  2. Lời khuyên của Djord cho Django ở Scale đưa ra lời khuyên ngược lại và cho biết trong trường hợp của họ, họ đã di chuyển sang một ứng dụng duy nhất sau khi bắt đầu với nhiều ứng dụng riêng biệt. Họ gặp vấn đề với biểu đồ phụ thuộc di chuyển giữa các ứng dụng.

Cả hai nguồn đều đồng ý rằng bạn nên tạo một ứng dụng riêng trong các tình huống sau:

  • Nếu bạn có kế hoạch sử dụng lại ứng dụng của mình trong một dự án Django khác (đặc biệt nếu bạn dự định xuất bản nó cho người khác sử dụng lại).
  • Nếu ứng dụng có ít hoặc không có phụ thuộc giữa ứng dụng này và ứng dụng khác. Ở đây bạn có thể tưởng tượng một ứng dụng đang chạy như một dịch vụ siêu nhỏ của chính nó trong tương lai.
1
Jonathan Berger