2008-12-12 20 views
8

Khá mới mẻ đối với cảnh này và cố gắng tìm một số tài liệu để áp dụng các phương pháp hay nhất. Chúng tôi đang xây dựng một trang nội dung khá lớn bao gồm nhiều danh mục phương tiện truyền thông khác nhau và tôi đang cố gắng tìm một số mô hình dữ liệu/kiến ​​trúc có thể so sánh để chúng tôi có thể hiểu rõ hơn cách tiếp cận chúng tôi nên sử dụng sử dụng trước đây. Bất kỳ cái nhìn sâu sắc/trợ giúp sẽ được đánh giá rất nhiều!MVC và nguyên tắc cơ bản django

Trả lời

16

"dữ liệu/mô hình kiến ​​trúc để chúng tôi có thể có được một ý tưởng tốt hơn về cách tiếp cận chúng ta nên sử dụng sử dụng một khuôn khổ, chúng tôi chưa bao giờ đã sử dụng trước khi"

Django áp đặt hoạt động tốt nhất trên bạn. Bạn không có nhiều lựa chọn và không thể phạm nhiều sai lầm.

MVC (trong khi một khát vọng cao quý) được thực hiện như sau:

  • dữ liệu được định nghĩa trong file "models.py" sử dụng các mô hình Django ORM.
  • urls.py tệp ánh xạ URL để xem hàm. Chọn URL của bạn một cách khôn ngoan.
  • Chức năng xem tất cả đang xử lý, sử dụng các mô hình và phương pháp trong các mô hình
  • Bản trình bày (qua mẫu HTML) được gọi bởi chức năng Xem. Về cơ bản, không thể xử lý trong bản trình bày, chỉ lặp lại nhẹ và ra quyết định

Mô hình được xác định cho bạn. Chỉ cần dính vào những gì Django làm tự nhiên và bạn sẽ được hạnh phúc.

Kiến trúc, bạn thường có một chồng như thế này.

  • Apache thực hiện hai việc.

    • phục vụ nội dung tĩnh trực tiếp và ngay lập tức
    • tay URL động cho Django (thông qua mod_python, mod_wsgi hoặc mod_fastcgi). Django apps URL bản đồ để xem chức năng (mà truy cập vào cơ sở dữ liệu (thông qua ORM/mô hình) và hiển thị qua mẫu.
  • Cơ sở dữ liệu được sử dụng bởi chức năng xem Django.

Kiến trúc được xác định rõ . cho bạn Chỉ cần dính vào những gì Django làm một cách tự nhiên và bạn sẽ được hạnh phúc

Hãy đọc Django documentation đó là tuyệt vời;... có lẽ là tốt nhất có

+0

Nếu bạn quan tâm đến hiệu suất hoặc sử dụng bộ nhớ, tốt hơn là nên có một máy chủ web riêng biệt nhẹ (như Nginx) để phục vụ nội dung tĩnh, thay vì sử dụng Apache cho cả hai (mặc dù bạn có thể nhận được hiệu ứng tương tự nếu bạn sử dụng mod_wsgi ở chế độ daemon và Apache worker MPM). –

+0

@Carl Meyer: hoặc lighttpd để phân phát nội dung tĩnh. –

5

đầu tiên, giả mạo t tất cả các câu thần chú MVC. điều quan trọng là phải có cấu trúc phân lớp tốt, nhưng MVC (như được định nghĩa ban đầu) không phải là một, nó là cấu trúc mô-đun, trong đó mỗi mô-đun GUI được chia thành các mô-đun con này. không có gì để sử dụng trên web ở đây.

trong phát triển web, nó thực sự trả tiền để có cấu trúc phân lớp, trong đó lớp quan trọng nhất là lớp lưu trữ/mô hình hóa, được gọi là lớp mô hình. trên hết, bạn cần một vài lớp khác nhưng chúng không thực sự giống như các khung nhìn và bộ điều khiển trong thế giới GUI.

các lớp Django là khoảng:

  • lưu trữ/mô hình: models.py, rõ ràng. cố gắng đặt hầu hết các khái niệm 'làm việc' ở đó. tất cả các mối quan hệ, tất cả các hoạt động nên được thực hiện ở đây.
  • phái: chủ yếu là trong urls.py. ở đây bạn chuyển lược đồ URL của bạn thành các đường dẫn mã. nghĩ về nó như một câu lệnh switch() lớn. cố gắng để có các URL có thể đọc được, ánh xạ này sẽ được ánh xạ vào ý định của người dùng. nó sẽ giúp rất nhiều để thêm chức năng mới, hoặc cách thức mới để làm những điều tương tự (như một giao diện người dùng AJAX sau này).
  • thu thập: chủ yếu là các chức năng chế độ xem, cả của bạn và chế độ xem chung được dựng sẵn. ở đây bạn chỉ cần thu thập tất cả từ các mô hình để đáp ứng yêu cầu của người dùng. trong nhiều trường hợp đáng ngạc nhiên, nó chỉ phải chọn một cá thể mô hình duy nhất và mọi thứ khác có thể được lấy ra từ các mối quan hệ. đối với các URL này, chế độ xem chung là đủ.
  • bản trình bày: các mẫu. nếu chế độ xem cung cấp cho bạn dữ liệu bạn cần, nó đủ đơn giản để biến nó thành một trang web. nó ở đây, nơi bạn sẽ cảm ơn rằng các lớp mô hình có các trình tiếp cận tốt để lấy bất kỳ loại dữ liệu có liên quan nào từ bất kỳ cá thể cụ thể nào.
+0

+1. Chính xác. –

0

Để hiểu fundementals django và django mất trên MVC, tham khảo ý kiến ​​như sau: http://www.djangobook.com/

Là một điểm khởi đầu để nhận được bàn tay của bạn bẩn với ... " ... cố gắng để tìm thấy một số so sánh Mô hình dữ liệu/kiến ​​trúc "

Đây là cách nhanh chóng và bẩn để đảo ngược thiết kế cơ sở dữ liệu để lấy tệp models.py, mà bạn có thể kiểm tra để xem django sẽ xử lý nó như thế nào.

1.) lấy biểu đồ er phù hợp chặt chẽ với mục tiêu của bạn. Ví dụ một cái gì đó như thế này http://www.databaseanswers.org/data_models/product_catalogs/index.htm

2.) tạo ra một kịch bản sql từ sơ đồ er và tạo ra các cơ sở dữ liệu, Tôi đề nghị Postgre, như một số loại MySQL bảng sẽ không có forgien trở ngại quan trọng, nhưng trong một MySQL nhúm hoặc SQLITE sẽ làm

3.) tạo và định cấu hình ứng dụng django để sử dụng cơ sở dữ liệu đó. Sau đó chạy: python manage.py inspectdb

Điều này ít nhất sẽ cung cấp cho bạn tệp models.py mà bạn có thể đọc để xem cách django cố gắng để mô hình hóa.

Lưu ý rằng lệnh kiểm tra được dự định là lối tắt để xử lý cơ sở dữ liệu di sản khi phát triển trong django và do đó không hoàn hảo. Hãy chắc chắn để đọc các sau đây trước khi cố gắng này: http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin

Các vấn đề liên quan