Trong một dự án Django mới, tôi chỉ tự hỏi có nên sử dụng Chế độ xem dựa trên lớp (CBV) hoặc Chế độ xem dựa trên chức năng (FBV) hay không.Trong một dự án Django mới, tôi có nên sử dụng chế độ xem dựa trên Lớp học hoặc Chức năng không?
Theo Django's documentation:
quan điểm dựa trên các lớp cung cấp một cách khác để thực hiện quan điểm như Python đối tượng thay vì chức năng. Họ không thay thế quan điểm dựa trên chức năng, nhưng có sự khác biệt nhất định và lợi thế khi so sánh với quan điểm chức năng dựa trên
Mà dường như mâu thuẫn với python Zen 'Chỉ có một cách để làm điều đó'
Vì vậy, , đó là cách tốt hơn?
Cho đến nay, tôi chỉ nhìn thấy ba khả năng:
Luôn luôn sử dụng FBV
có nghĩa là không sử dụng quan điểm chung ở tất cả (như những người đang dựa trên lớp từ 1,5)
Luôn sử dụng CBV:
Có vấn đề nhất định khi xác định đơn đặt hàng xử lý yêu cầu. Xem
http://lukeplant.me.uk/blog/posts/djangos-cbvs-were-a-mistake/
Tôi cũng nghĩ rằng việc xây dựng hệ thống phân cấp cả lớp là không tốt cho việc thực hiện. Trong trường hợp đó tôi cũng sẽ tự hỏi mình, tại sao FBV không bị phản đối?
Đưa generic CBV vào FBV, theo
https://gist.github.com/spookylukey/2596285
mà kết quả trong rất nhiều mã boilerplate độc ác
Bạn có thấy bất kỳ cách nào khác, hoặc không ai biết nơi các quan điểm đang diễn ra?
"không ai biết vị trí của lượt xem" - câu hỏi này không dành cho SO, nó dành cho danh sách gửi thư phát triển/IRC. –
Bạn nên sử dụng cái nào có ý nghĩa nhất cho dự án của bạn. Tôi sẽ nói rằng chức năng dựa trên * generic * xem sẽ bị lỗi thời; nhưng các khung nhìn dựa trên chức năng giải quyết một vấn đề khác với các khung nhìn dựa trên lớp làm. –
@GeorgeStocker: Nó không phải là một mâu thuẫn khi nói 'sử dụng cái nào có ý nghĩa nhất cho dự án của bạn [...] Tôi sẽ nói rằng các hàm wievs chung dựa trên hàm sẽ bị lỗi thời'? Vì vậy, nếu FBV sẽ trở nên lỗi thời, tôi không nên sử dụng chúng? Trong hầu hết các trường hợp, cả fbv và cbv đều đang giải quyết cùng một vấn đề, không phải là nó không thể cung cấp cả hai bằng nhau và sử dụng cả hai trong một dự án? – ProfHase85