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

#python #django

#python #django

Вопрос:

У меня есть следующий пользовательский 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 публикует?

Комментарии:

1. Возможно, вы могли бы включить в свою форму какой-нибудь скрытый ввод, который содержал бы «следующий» адрес (как и форма входа), а когда этот отсутствует, просто перенаправьте их на эту страницу. HTTP_REFERER должен afaik возвращать URI, где была форма. (обычно это представление формы подтверждения удаления). Так что HTTP_REFERER_REFERER в вашем случае это было бы a, если вы хотите перейти на предыдущую страницу (до того, как пользователь перешел к форме) Я думаю, это действительно зависит от того, чего вы пытаетесь достичь.

Ответ №1:

Вам нужно импортировать HttpResponseRedirect

из django.http импорт HttpResponseRedirect

а затем

вернуть HttpResponseRedirect(request.META.get(‘HTTP_REFERER’))

Комментарии:

1. Это не так. Я импортирую его. В противном случае я бы получил сообщение об ошибке, а не URL текущей страницы.