Django:DeleteView + HttpResponseNotAllowed

时间:2018-11-09 16:42:59

标签: python django

我找到了这个DeleteView。有人可以告诉我return HttpResponseNotAllowed(['POST'])是干什么的吗?我是否也应该将其添加到自己的DeleteView中?

class DiscountDelete(AdminPermissionRequiredMixin, DeleteView):
    model = Discount

    def get(self, *args, **kwargs):
        return HttpResponseNotAllowed(['POST'])

2 个答案:

答案 0 :(得分:4)

使用Django的基于类的视图,您可以为此定义一个类变量;

class DiscountDelete(AdminPermissionRequiredMixin, DeleteView):
    model = Discount
    http_method_names = ['post']

然后,如果该视图收到一个get请求,它将发回您要查找的405。

有关此的文档在这里; https://docs.djangoproject.com/en/2.1/ref/class-based-views/base/#django.views.generic.base.View.http_method_names

答案 1 :(得分:3)

在通常的删除视图中,当您执行GET请求时,将获得一个确认页面。然后,当您通过POST请求提交表单时,该对象将被删除。

自定义get()方法正在禁用GET请求。也许不需要,因为删除请求是从其他视图(例如列表视图)提交的。

我们无法确定是否应将此功能添加到删除视图中。由你决定。