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:
Y en a-t-il d'autres?
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!
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?
from Django.shortcuts import redirect
redirect(request.path_info) # No query parameters
redirect(request.build_absolute_uri()) # Keeps query parameters
redirect(request.get_full_path()) # Keeps query parameters
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'))