web-dev-qa-db-de.com

Weiterleiten / Zurückkehren zu derselben (vorherigen) Seite in Django?

Welche Optionen stehen zur Verfügung, wenn Sie den Benutzer in Django) auf dieselbe Seite zurückführen möchten, und welche Vor-/Nachteile haben diese beiden Optionen?

Methoden, die ich kenne:

  • HTTP_REFERER
  • GET-Parameter, der die vorherige URL enthält
  • Sitzungsdaten zum Speichern der vorherigen URL

Gibt es noch andere?

54
Al Bundy

Eine Möglichkeit ist die Verwendung von HTTP_REFERER Header wie folgt:

from Django.http import HttpResponseRedirect

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

Ich bin mir der Nachteile nicht sicher!

103
Rohan

Die Frage und Antwort ist zwar alt, aber ich denke, es fehlen ein paar Optionen. Ich habe keine Nachteile mit den Methoden zu finden, würde ich mich freuen zu wissen, wenn es welche gibt?

9
Daniel Backman

100% Arbeitsbeispiel

Für klassenbasierte Ansicht und Funktion:

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

oder

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

Beispiel -

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'))
2
Huzaif Sayyed