2012-11-09 40 views
37

Tốt hơn nên sử dụng thông thường?Sự khác nhau giữa việc sử dụng chuyển hướng Django và HttpResponseRedirect là gì?

Có lợi thế nào để viết:

return redirect(my_url) 

qua:

return HttpResponseRedirect(my_url) 

Hoặc là một bí danh trực tiếp? Có sự khác biệt nào không? Đó là nhiều pythonic/django-nic?

Trả lời

46

Có sự khác biệt giữa hai:

Trong trường hợp của HttpResponseRedirect đối số đầu tiên chỉ có thể là một url.

redirect mà sẽ cuối cùng trả về một HttpResponseRedirect có thể chấp nhận một model, view, hoặc url vì nó là "thành" đối số. Vì vậy, nó là một chút linh hoạt hơn trong những gì nó có thể "chuyển hướng" đến.

Tôi cũng thích cách redirect ngắn hơn. Vì vậy, tôi muốn sử dụng redirect trên HttpResponseRedirect.

Cả hai đều tốt để sử dụng.

6

Từ tài liệu -

redirect(to[, permanent=False], *args, **kwargs) Trả về một HttpResponseRedirect đến URL thích hợp cho các đối số truyền.

từ định nghĩa của nó giống nhau. Đó là những gì cho các phím tắt. Cả hai đều giống nhau và giống nhau.

phím tắt thường được viết một cấp cao hơn API thực tế. Vì vậy, redirect đóng gói HttpResponseRedirectHttpResponsePermanentRedirect với arg permanent=False.

Không có bất lợi lớn nào khi sử dụng HttpResponseRedirect trên redirect. Hy vọng điều này sẽ xóa nó.

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