Câu hỏi Bộ điều khiển xem Django và Model View [đã đóng]


Ai đó có thể giải thích cho tôi nơi diferences giữa Django và mô hình Model View Controller?

Về mặt chức năng, những gì chúng ta có thể mong đợi từ những khác biệt đó - tức là những gì hoạt động khác so với Django, ví dụ, Ruby on Rails?


76
2017-07-08 08:05


gốc


Khi bạn nói "the" Model View Controller, bạn có nghĩa là mô hình chung, hoặc thực hiện cụ thể (như Ruby on Rails)? - Paul D. Waite
Câu hỏi này không đủ điều kiện là 'không xây dựng' và có câu trả lời thẳng về phía trước mà không có "tranh luận, tranh luận, bỏ phiếu hoặc thảo luận mở rộng". Tại sao lại đóng cửa? - user
không xây dựng? SO siêu mods tấn công một lần nữa. - Amit Tripathi
Tính đến hôm nay, gần 24.000 người đã tìm thấy câu hỏi này mang tính xây dựng. Bao gồm bản thân tôi. - frozenjim
Đến năm 2017, câu hỏi này vẫn mang tính xây dựng - Leonardo Pessoa


Các câu trả lời:


Theo Sách Django, Django theo mô hình MVC đủ chặt chẽ để được gọi là một khung MVC.

Django đã được gọi là một khuôn khổ MTV bởi 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, các mẫu và các khung nhìn.

Bạn có thể đọc thêm về MTV / MVC tại đây:

Mẫu phát triển MTV (hoặc MVC)

Nếu bạn quen với MVC khác   Các khung phát triển web, chẳng hạn như   Ruby on Rails, bạn có thể xem xét Django   lượt xem là bộ điều khiển và   Các mẫu Django là lượt xem.

Đây là một sự nhầm lẫn không may   mang về bởi sự khác biệt   giải thích về MVC.

Trong cách giải thích của Django về MVC, lượt xem   mô tả dữ liệu được trình bày   cho người dùng; nó không nhất thiết   dữ liệu trông như thế nào, nhưng dữ liệu nào   trình bày.

Ngược lại, Ruby on Rails   và các khuôn khổ tương tự cho thấy rằng   công việc của người điều khiển bao gồm quyết định   dữ liệu nào được hiển thị cho người dùng,   trong khi quan điểm là đúng như thế nào   dữ liệu trông, không phải dữ liệu nào   trình bày.


103
2017-07-08 08:45



Cảm ơn câu trả lời tuyệt vời. Đến từ Rails đến Django, điều này trả lời một trong những điều tôi thấy bực bội nhất: tại sao django đặt mã điều khiển trong một tệp có tên là views.py !? - dgmdan
@ dgmdan Nó chỉ là một quy ước mặc định, bạn có thể chọn tên bạn thích. Nhưng tôi đồng ý, có vẻ kỳ lạ :) - Paolo Moretti
Tôi thà để views.py như một lớp xem và tạo một bộ các lớp điều khiển thành một gói điều khiển để tránh sự nhầm lẫn của Django. - stanleyxu2005
@dgmda: Việc trở thành khái niệm về "bộ điều khiển" là một sự nhầm lẫn trong các ứng dụng web. MVC là một khung điều khiển sự kiện không chỉ phù hợp với mô hình REQUEST / RESPONSE không trạng thái của HTTP. Nó không nên được gọi là MVC ngay từ đầu. Hầu như tất cả các ứng dụng web không phải là MVC, nhưng sử dụng một mô hình và một hàm hoặc lớp thường được gọi là một khung nhìn. Lần lượt lượt xem có thể ủy quyền hiển thị HTML cho một Mẫu, nhưng không cần. Vì vậy, không có một bộ điều khiển, thực sự. - Lennart Regebro
Tôi trở lại khái niệm của Lennart Regebro rằng một mô hình không trạng thái như HTTP không nên có một bộ điều khiển và một mô hình MVC cho các ứng dụng web chỉ mang lại sự nhầm lẫn lớn - Hussam


Câu hỏi thường gặp về Django là một nơi phù hợp để bắt đầu:

Xin lưu ý rằng "Trình đ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 tốt hơn có thể là "Django phù hợp với mô hình Bộ điều khiển xem mô hình như thế nào?"


18
2017-07-08 08:11



Đây có lẽ là câu trả lời trực tiếp nhất. - user


Khi bạn viết mã, không suy nghĩ về tên của các phần khung công tác, không có sự khác biệt bẩm sinh nào, ví dụ như RoR. Nhưng nó phụ thuộc vào việc bạn sử dụng models, kể từ ngày Django họ dễ dàng chứa một số logic mà trên các khuôn khổ khác sẽ ở lại ở cấp độ điều khiển.

Các view trên 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.


10
2017-11-15 15:31



A views ở Django giống như một controller trong MVC và template ở Django có nhiều khả năng views - Roel


Trong mvt, một yêu cầu đến một URL được gửi đến một View. Chế độ xem này gọi vào Mô hình, 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 câu trả lời. lý tưởng trong các khung công tác web, bộ điều khiển bị ẩn khỏi chế độ xem.

Đây là nơi sự khác biệt là từ 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à khung nhìn truy vấn mô hình để hiển thị kết quả cho người dùng.


6
2017-07-08 08:13