Я делаю упражнение, которое состоит из небольшой газеты, я хочу разрешить только создателю статьи удалить ее, в противном случае, перенаправить на «домашнюю» страницу.Но, это не работает, я только могу поднять Http404.
views.py:
class ArticleDeleteView(LoginRequiredMixin, DeleteView):
model = Article
template_name = 'article_delete.html'
success_url = reverse_lazy('article_list')
def get_object(self, queryset=None):
""" Hook to ensure object is owned by request.user """
obj = super(ArticleDeleteView, self).get_object()
if not obj.author == self.request.user:
print(redirect('home'))
raise Http404
return obj
Я пытался:
return redirect('home')
Вместо"поднять Http404", но Django выдает эту ошибку:
'HttpResponseRedirect' object has no attribute 'delete'
Как решить эту проблему и почему это происходит?
Спасибо за вашу помощь !!
РЕДАКТИРОВАТЬ: (После @SK. Комментарий Фазли Рабби, этот пост поставил меня на правильный путь)
Это прекрасно работает!Спасибо, СК.Фазли Рабби
def dispatch(self, request, *args, **kwargs):
""" Making sure that only authors can delete Articles """
obj = self.get_object()
if obj.author != self.request.user:
messages.error(request, 'Document not deleted.')
return redirect('article_list')
messages.success(request, 'Document deleted.')
return super(ArticleDeleteView, self).dispatch(request, *args, **kwargs)