2013-07-04 25 views

Trả lời

34

DeleteView trả lời yêu cầu POSTGET, GET yêu cầu xác nhận hiển thị, trong khi POST xóa cá thể.

Bạn có thể gửi POST yêu cầu, mà không xác nhận với hình thức như thế này:

<form method="POST" action="{% url "your_delete_url_name" %}"> 
    {% csrf_token %}<input type="submit" value="DELETE"> 
</form> 

Nếu bạn không muốn có một liên kết thay vì nút hình thành, sử dụng một số javascript để thực hiện hình thức vô hình, mà sẽ được gửi về nhấp vào liên kết.

Nó không phải là thực hành tốt để sử dụng GET yêu cầu cập nhật hoặc xóa, nhưng nếu bạn thực sự khẳng định bạn có thể tắt get phương pháp theo quan điểm của lớp học của bạn để post, ví dụ:

def get(self, *args, **kwargs): 
    return self.post(*args, **kwargs) 
+1

Cảm ơn bạn đã làm việc tốt với phương pháp đăng bài. – yaniv14

+0

bạn được chào đón :) – bmihelac

1

Có, chỉ cần thay đổi thông số tiếp theo. Trong phản hồi trả về của bạn, hãy đảm bảo rằng từ điển bạn truyền vào có một cái gì đó như thế này: { 'next': '/<your_path_here>}/' }, đảm bảo bạn cam kết các thay đổi trước khi thêm tham số next. Bạn có thể muốn thay đổi các chức năng getpost của chế độ xem của mình.

+0

tôi không có bất kỳ nhận hoặc gửi quan điểm, tất cả mọi thứ tạo ra với DeleteView – yaniv14

+0

Được rồi, tôi cũng không nghĩ rằng bạn có thể thay đổi nó mà không thay đổi 'chức năng post' của bạn, và không có cách nào để làm điều này là 1,5 (theo hiểu biết tốt nhất của tôi) xem tài liệu: https://docs.djangoproject.com/en/1.5/ref/class-based-views/flattened-index/#deleteview. Nếu bạn không biết cách sử dụng các hàm 'get()' và 'post()' bên trong các CBV, thì tôi khuyên bạn nên tìm hiểu về chúng. –

6

Hoặc bạn có thể xác định lại get() phương pháp trong số DeleteView:

class YourDeleteView(DeleteView): 

    model = YourModel 
    success_url = '<success_url>' 

    def get(self, request, *args, **kwargs): 
     return self.post(request, *args, **kwargs) 

Nhưng hãy cẩn thận với điều đó, đảm bảo điều này không ảnh hưởng đến chức năng khác.

1

Tất cả những gì bạn phải làm là ghi đè phương thức get_success_url của chế độ xem xóa. Sau đó, nó sẽ trực tiếp xóa đối tượng khỏi DB. Ví dụ:

class YourView(DeleteView): 
    model = YourModel 

    def get_success_url(self): 
     return reverse('your_redirect_view') 
Các vấn đề liên quan