Je pense que cela devrait être facile, mais je ne peux pas le comprendre. J'essaie d'écrire une vue de retrait. Je reçois une demande d'obtention. Grâce à urls.py, je rend ma vue de désactivation. Dans cette vue, j'enregistre certains paramètres pour l'utilisateur dans la base de données, puis je souhaite rediriger l'utilisateur vers une URL externe. J'ai essayé:
return redirect('http://stackoverflow.com/')
à partir de documentation Django . Cependant, la vue optout rend le modèle de formation au lieu de renvoyer la redirection, bien que les paramètres soient enregistrés dans la base de données comme prévu. Mon code est le suivant:
def optout(request):
if (('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != "") or
(request.session.get('userid', False) and request.session['userid'] != "")):
if ('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != ""):
userid = request.META['REMOTE_USER']
if (request.session.get('userid', False) and request.session['userid'] != ""):
userid = request.session['userid']
user = User.objects.get(username=userid)
user.optout = True
user.postpone = False
user.save()
return redirect('http://stackoverflow.com/')
context = { 'userid': "" }
return render(request, 'games/Training.html', context)
Toute aide est grandement appréciée.
Oui, return redirect('http://stackoverflow.com/')
est la bonne méthode.
Si vous procédez comme suit, vous pouvez confirmer qu'il s'agit d'une méthode de travail pour rediriger.
def optout(request):
return redirect("http://stackoverflow.com/")
Vos déclarations conditionnelles ne doivent pas être saisissantes.
en utilisant la classe HttpResponseRedirect
from Django.http import HttpResponseRedirect
def out(request):
return HttpResponseRedirect("http://google.com")
Ou:
en utilisant la classe HttpResponse
from Django.http import HttpResponse
def out(request):
response = HttpResponse("", status=302)
response['Location'] = "http://google.com"
return response
REMARQUE:
Le dernier est utile pour rediriger d'un site Web vers une application mobile (Android/Iphone). Où est l'emplacement
scheme://Host