Ai đó có thể giải thích cho tôi sự khác nhau giữa Django và mẫu Model View Controller không?
Về mặt chức năng, chúng ta có thể mong đợi điều gì từ những khác biệt đó - tức là những gì hoạt động khác biệt so với Django, chẳng hạn như Ruby on Rails?
Ai đó có thể giải thích cho tôi sự khác nhau giữa Django và mẫu Model View Controller không?
Về mặt chức năng, chúng ta có thể mong đợi điều gì từ những khác biệt đó - tức là những gì hoạt động khác biệt so với Django, chẳng hạn như Ruby on Rails?
Câu trả lời:
Theo Sách Django , Django tuân theo mô hình MVC đủ chặt chẽ để được gọi là khung MVC.
Django đã được gọi là một khuôn khổ MTV vì bộ điều khiển được xử lý bởi chính khuôn khổ và hầu hết sự phấn khích xảy ra trong các mô hình, khuôn mẫu và chế độ xem.
Bạn có thể đọc thêm về MTV / MVC tại đây:
Mô hình phát triển MTV (hoặc MVC)
Nếu bạn đã quen thuộc với các khuôn khổ phát triển Web MVC khác, chẳng hạn như Ruby on Rails, bạn có thể coi các khung nhìn Django là bộ điều khiển và các mẫu Django là các khung nhìn .
Đây là một sự nhầm lẫn đáng tiếc do cách hiểu khác nhau về MVC.
Theo diễn giải của Django về MVC, chế độ xem mô tả dữ liệu được trình bày cho người dùng; không nhất thiết chỉ là dữ liệu trông như thế nào, mà là dữ liệu nào được trình bày.
Ngược lại, Ruby on Rails và các khuôn khổ tương tự gợi ý rằng công việc của bộ điều khiển bao gồm việc quyết định dữ liệu nào được trình bày cho người dùng, trong khi chế độ xem hoàn toàn là dữ liệu trông như thế nào chứ không phải dữ liệu nào được trình bày.
Bản thân Câu hỏi thường gặp về Django là một nơi tốt để bắt đầu:
Theo cách hiểu của chúng tôi về MVC, “chế độ xem” mô tả dữ liệu được hiển thị cho người dùng. Không nhất thiết là dữ liệu trông như thế nào mà là dữ liệu nào được trình bày. Chế độ xem mô tả dữ liệu nào bạn thấy, không phải cách bạn nhìn thấy dữ liệu đó. Đó là một sự khác biệt tinh tế.
...
Hơn nữa, thật hợp lý khi tách nội dung khỏi bản trình bày - đó là nơi xuất hiện các mẫu. Trong Django, “chế độ xem” mô tả dữ liệu nào được trình bày, nhưng chế độ xem thường ủy quyền cho một mẫu, mô tả cách dữ liệu được trình bày.
Vậy thì "bộ điều khiển" phù hợp ở đâu? Trong trường hợp của Django, có lẽ đó là chính khung: máy gửi yêu cầu đến chế độ xem thích hợp, theo cấu hình URL Django.
Nếu bạn khao khát các từ viết tắt, bạn có thể nói rằng Django là một khuôn khổ “MTV” - nghĩa là “mô hình”, “khuôn mẫu” và “chế độ xem”. Sự đổ vỡ đó có ý nghĩa hơn nhiều.
Hãy nhớ rằng “Bộ điều khiển Chế độ xem Mô hình” chỉ là một mẫu, tức là một nỗ lực để mô tả một kiến trúc chung. Vì vậy, một câu hỏi hay hơn có thể là "Django phù hợp với mẫu Model View Controller đến mức nào?"
Khi bạn viết mã, không nghĩ đến tên của các phần khung, không có sự khác biệt đáng ngờ nào, ví dụ như RoR. Nhưng nó phụ thuộc vào cách bạn sử dụng models
, vì trên Django, chúng dễ dàng chứa một số logic mà trên các khung công tác khác sẽ ở mức bộ điều khiển.
Trên view
Django có xu hướng là một tập hợp các truy vấn để tìm nạp dữ liệu và chuyển chúng vào mẫu.
views
trong Django là một cái gì đó giống như một controller
trong MVC và một template
trong Django có nhiều khả năng mộtviews
Trong mvt, một yêu cầu đến một URL được gửi đến một Chế độ xem. View này gọi vào Model, thực hiện các thao tác và chuẩn bị dữ liệu cho đầu ra. Dữ liệu được chuyển đến một Mẫu được trả về một phản hồi được phát ra. lý tưởng nhất là trong các khuôn khổ web, bộ điều khiển được ẩn khỏi chế độ xem.
Đây là điểm khác biệt so với MVC: trong mvc, người dùng tương tác với gui, bộ điều khiển xử lý yêu cầu và thông báo cho mô hình và chế độ xem truy vấn mô hình để hiển thị kết quả cho người dùng.