首页 > 解决方案 > 如何在自定义 DeleteView 中重定向到上一页?

问题描述

我有以下习惯DeleteView

class CarDeleteView(LoginRequiredMixin, DeleteView):
    model = Car
    context_object_name = 'car'
    template_name = 'cars/car_confirm_delete.html'
    success_message = "%(name)s is pending removal"

    def get_success_url(self):
        return reverse('car-list')

    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
       name = self.object.name
        owner = self.object.owner
        if owner != self.request.user:
            messages.error(request, f'You don\'t have permissions to remove {name}')
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

        # DO Stuff
        return redirect(reverse('car-list'))

当用户不是所有者时,我试图重定向到上一个入口点(因此他无法删除)。但HttpResponseRedirect(request.META.get('HTTP_REFERER'))给了我当前页面的 URL ( car_confirm_delete.html) 而不是上一个页面。我怎样才能让它转到上一个?也许那是因为 Django 做 POST?

标签: pythondjango

解决方案


您需要导入 HttpResponseRedirect

从 django.http 导入 HttpResponseRedirect

接着

返回 HttpResponseRedirect(request.META.get('HTTP_REFERER'))


推荐阅读