Перенаправить/вернуться на ту же (предыдущую) страницу в Django? - программирование
Подтвердить что ты не робот

Перенаправить/вернуться на ту же (предыдущую) страницу в Django?

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

Методы, которые я знаю:

  • HTTP_REFERER
  • GET параметр, содержащий предыдущий URL
  • Данные сеанса для сохранения предыдущего URL

Есть ли другие?

4b9b3361

Ответ 1

Один из способов заключается в использовании заголовка HTTP_REFERER, как показано ниже:

from django.http import HttpResponseRedirect

def someview(request):
   ...
   return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

Не уверен в минусах этого!

Ответ 2

Хотя вопрос и ответ устарели, я думаю, что ему не хватает нескольких вариантов. Я не нашел никаких минусов с методами, я был бы рад узнать, если есть какие-либо?

Ответ 3

100% рабочий пример

Для просмотра на основе классов и функций:

from django.http import HttpResponseRedirect
    ...
    return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

или же

from django.http import HttpResponseRedirect
    ...
    return HttpResponseRedirect(self.request.META.get('HTTP_REFERER'))

Пример -

class TaskNotificationReadAllView(generic.View):

    def get(self, request, *args, **kwargs):
        TaskNotification.objects.filter(assigned_to=request.user).update(read=True)   
        print(request.META.get('HTTP_REFERER'))    
        return HttpResponseRedirect(request.META.get('HTTP_REFERER'))