Я работаю над сайтом Django, и у меня есть проблема в поиске правильного / хорошего способа обработки представления удаления.Из того, что я обнаружил, есть два способа приблизиться к этому:
1
class ObjectDeleteView(DeleteView):
model = Object
def get_success_url(self):
objectid = self.kwargs['object_id']
object = Object.objects.get(id = objectid)
container = object.container
containerid = container.id
url = reverse('Containers:showContainerContent', args=[containerid])
return url
def get_object(self):
return get_object_or_404(Object, pk=self.kwargs['object_id'])
2
def objectDelete(request, object_id):
object = Object.objects.get(id = object_id)
container = object.container
containerid = container.id
url = reverse('Containers:showContainerContent', args=[containerid])
return HttpResponseRedirect(url)
Из того, что я могу сказать, оба делают абсолютно одинакововещь - как только объект удален, данный пользователь со страницей в разделе «Контейнеры»: showContainerContent.
Большая разница, с которой я сталкиваюсь, - это ошибка, которую я получаю при запуске модульного теста для этого (простой вызов веб-сайта и проверка кода ответа),С опцией 1 я получаю ошибку
django.template.exceptions.TemplateDoesNotExist: ContainerApp/object_confirm_delete.html
Что я понимаю - у меня нет этого шаблона, это шаблон по умолчанию для DeleteView, следовательно, ошибка верна.Дело в том, что я не хочу иметь дополнительную страницу.Просто перенаправьте пользователя и все.
Кроме того, я протестировал изменение return url
на return HttpResponseRedirect(url)
в варианте 1, но результат тот же.
Что мне здесь делать?Должен ли я просто продолжить с вариантом 2?Каковы или могут быть недостатки этого подхода?