2010-03-18 48 views
11

Tôi chỉ mới bắt đầu học Django và hơi bối rối một cách tốt nhất để bố trí và tổ chức một dự án và ứng dụng. Từ sự hiểu biết của tôi, một dự án là toàn bộ trang web của bạn và các ứng dụng là những phần tạo nên trang web đó?Django và tổ chức dự án/ứng dụng

Đối với dự án đầu tiên tôi đang tạo một trang web loại thương mại điện tử nhỏ sẽ có người dùng, mặt hàng, v.v ... Vậy tôi có ứng dụng "người dùng" và "mục" không? Điều gì về các bộ phận nhỏ hơn mà sẽ đi cùng với những người như đăng ký người dùng/đăng nhập, thẻ cho các hạng mục, ý kiến ​​cho các hạng mục? Người dùng có nên xác thực, gắn thẻ và nhận xét là các ứng dụng riêng biệt không? Về cơ bản, tôi đang gặp khó khăn khi gói đầu xung quanh khái niệm về ứng dụng là gì và khi nào phân tách các trường hợp sử dụng khác nhau thành các ứng dụng riêng biệt trong khi vẫn giữ mọi thứ có thể quản lý và KHÔ.

+2

Xác thực, gắn thẻ và nhận xét của người dùng đã là các ứng dụng riêng biệt ở Django. –

+1

Trong khi chờ đợi các câu trả lời có thẩm quyền hơn, bạn có thể quan tâm đến việc duyệt mã nguồn cho Satchmo (http://www.satchmoproject.com/), một webshop dựa trên Django. Trong khi tôi không đi lặn nguồn, ít nhất là trong cùng một miền với dự án của bạn. Nó cũng đáng xem xét nguồn của Everyblock (http://code.google.com/p/ebcode/), vì nó được viết bởi Adrian Holovaty, đồng sáng lập của Django. Có một số cách tốt hơn để hiểu thành ngữ xung quanh các công cụ hơn là xem cách người sáng tạo sử dụng chúng. – Callahad

Trả lời

18

Ignacio đúng khi chỉ ra rằng một số ứng dụng bạn đề cập đã tồn tại. Bạn cũng nên xem xét các dự án như Pinax cho các ứng dụng có thể cắm khác có thể là điểm khởi đầu cho dự án của riêng bạn.

Bây giờ cho câu hỏi của bạn: Một dự án Django là một bộ sưu tập các ứng dụng Django - phần mà bạn đã đúng. Các Django book xác định nó tốt hơn:

"Dự án là tập hợp các cài đặt cho một thể hiện của Django, bao gồm cấu hình cơ sở dữ liệu, tùy chọn cụ thể Django và cài đặt dành riêng cho ứng dụng".

Các django book defines a Django app như:

"Một bó mã Django, bao gồm các mô hình và quan điểm, sống chung với nhau trong một gói Python đơn và đại diện cho một ứng dụng Django đầy đủ"

Nhưng trong một lớp học gần đây với Jacob Kaplan-Moss tôi hiểu (nhớ rằng Tôi không nói rằng đó là những gì ông nói !!!) mà một App Django là tất cả về đóng gói thông thường được xác định rõ hành vi. Tôi cũng hiểu rằng có nhiều ứng dụng nhỏ là OK - tốt hơn là có một ứng dụng nguyên khối thực hiện mọi thứ - và một số ứng dụng chỉ có ở đó để cung cấp mẫu, một số mô hình, một số bộ sưu tập mẫu, mô hình và chế độ xem hoàn chỉnh .

Hầu hết các dự án của tôi - là ứng dụng đối mặt nội bộ cho công ty của chúng tôi - có một ứng dụng có thể cắm được phát triển nội bộ, đó là một bộ sưu tập mẫu, css, javascript, v.v. buộc các dự án cùng với một giao diện chung. Tôi không có lượt xem hoặc mô hình nào trong ứng dụng có thể cắm được.

Tôi có một ứng dụng có thể cắm, cũng được phát triển nội bộ, chứa một loạt các mô hình được chia sẻ giữa nhiều dự án. Các mô hình đại diện cho các bảng cơ sở dữ liệu chung được sử dụng bởi một số ứng dụng khác nhau và để chúng trùng lặp trong mỗi ứng dụng sẽ là violate DRY.

Một số ví dụ điển hình của ứng dụng:

  • xác thực (Django đã có một ứng dụng tiêu chuẩn xác thực)
  • hỗ trợ gravatar (Pinax có nó)
  • gắn thẻ (Một số tùy chọn có sẵn, Pinax có một)
  • trợ giúp (chúng tôi phát triển một nội)

Tất cả những điều trên được giải quyết một vấn đề logic. Họ không cố gắng trở thành giải pháp do-it-all ... Ứng dụng Gravatar không cung cấp hỗ trợ OpenID (có một ứng dụng khác cho OpenID) và ứng dụng trợ giúp nội bộ của tôi không cung cấp xác thực (nó sử dụng django mặc định ứng dụng cho điều đó).

Ví dụ xấu về ứng dụng Django sẽ là một ví dụ thực hiện xác thực, hỗ trợ openid, bộ phận trợ giúp và theo dõi dự án. Tại sao điều đó lại xấu? Bởi vì bây giờ nếu bạn muốn sử dụng lại ứng dụng xác thực của mình, bạn phải giải mã một số mô hình, một số chế độ xem, một số mẫu từ ứng dụng bao gồm tất cả của bạn. Nếu bạn quyết định rằng hỗ trợ OpenId là phải cho dự án tiếp theo của bạn, bạn sẽ phải đi qua mã của ứng xử khổng lồ này của một ứng dụng và tìm hiểu những phần nào có liên quan.

Ứng dụng Django tốt cung cấp một bộ hoạt động hợp lý và thực hiện tốt.