Удаление записи с помощью представления на основе класса в django

Как удалить запись с помощью представления на основе класса

Я использую нижеприведенный вид.

class UserDeleteView(DeleteView):
    model = User
    success_url = reverse_lazy('dashboard')
    template_name = 'delete_user_confirm.html'

Можно ли избежать template_name = 'delete_user_confirm.html' ?

Если вам нужно представление удаления без шаблона подтверждения, я бы вообще не использовал класс DeleteView. Скорее всего, я бы использовал функциональный вид, который возвращает перенаправление на успешный url:

def delete_user(request, id):
    # only allow POST requests (assuming requests are sent from browser not API call)
    if request.method != "POST":
        return Response(status=405)
    obj = get_object_or_404(User, id=id)
    obj.delete()
    return HttpResponseRedirect(reverse("your_success_url"))

Думаю, если очень хочется, можно переопределить метод DeleteView get для вызова логики DELETE, но мне не очень нравится идея, когда запрос GET фактически выполняет логику DELETE.

Но если вы действительно хотите/не хотите делать это таким образом, то это будет выглядеть так:

class UserDeleteView(DeleteView):
    model = User
    success_url = reverse_lazy('dashboard')

    def get(self, request, *args, **kwargs):
        return self.delete(request, *args, **kwargs)
Вернуться на верх