Перенаправить/вернуться на ту же (предыдущую) страницу в Django?
Какие есть варианты, когда вы хотите вернуть пользователя на ту же страницу в Django и каковы плюсы/минусы каждого?
Методы, которые я знаю:
- HTTP_REFERER
- GET параметр, содержащий предыдущий URL
- Данные сеанса для сохранения предыдущего URL
Есть ли другие?
Ответы
Ответ 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'))