web-dev-qa-db-fra.com

Rediriger / retourner à la même page (précédente) dans Django?

Quelles sont les options lorsque vous souhaitez renvoyer l'utilisateur sur la même page dans Django et quels sont les avantages/inconvénients de chacun?

Méthodes que je connais:

  • HTTP_REFERER
  • Paramètre GET contenant l'URL précédente
  • Données de session pour stocker l'URL précédente

Y en a-t-il d'autres?

54
Al Bundy

L'un des moyens consiste à utiliser HTTP_REFERER en-tête comme ci-dessous:

from Django.http import HttpResponseRedirect

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

Pas sûr par contre de ça!

103
Rohan

Bien que la question et la réponse soient anciennes, je pense qu'il manque quelques options. Je n'ai trouvé aucun inconvénient aux méthodes, je serais heureux de savoir s'il y en a?

9
Daniel Backman

Exemple 100% fonctionnel

Pour la vue et la fonction basées sur les classes:

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

ou

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

Exemple -

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