Je crée une vue d'alogine dans laquelle lorsque l'utilisateur n'est pas connecté, il doit aller à la même page avant de vous connecter, puis allez à une autre URL, mais elle passe toujours à l'autre URL, mais elle devrait aller à la première redirection vues.py p> formulaires.py: p> Je veux dire que ça va toujours dans ce cas: P> if is_safe_url(redirect_path, request.get_host()):
return(redirect(redirect_path))
3 Réponses :
Vous devez utiliser p>
Parce que si vous passez redirect_path = next_get_url ou next_post_url ou "/" code> p>
Aucun code> à
is_safe_url code>, il retournera
false code> car il ne prend que des URL valides. P>
ça va toujours à "/" J'ai besoin du contraire
Essayez l'impression is_safe_url (redirect_path, demande.get_host ()) code>. Il retournera
false code> si votre demande n'a pas
next_get_url code> ou
next_post_url code>. C'est pourquoi vous devez changer cette ligne. Qu'est-ce que
impression (utilisateur) code> imprimé?
Oui, vous avez raison alors, comment faire NEXT_GET_URL être vrai?
Imprimer (utilisateur) imprime le nom d'utilisateur
Vous pouvez ajouter un champ masqué dans votre formulaire
Premièrement, Django est livré avec un loginView code>
qui gère la redirection pour vous. Il serait préférable d'utiliser cela que d'écrire votre propre vue.
Si vous écrivez votre propre point de vue, vous devez inclure votre redirect_path code> dans votre
contexte code> Dictionnaire code> a href = "https://github.com/django/django/blob/master/django/contrib/auth/views.py#l97" rel = "nOfollow noreferrer"> Voici où Django est , Et puis vous devez l'inclure comme un champ masqué dans le formulaire de connexion (voir l'exemple de modèle dans les docs pour
loginView code>: p>
Alors, comment faire la prochaine page que j'étais avant de vous connecter?
Inclure Suivant code> dans le contexte du modèle, par exemple
contexte ['Suivant'] = redirect_path code>. Je ne peux pas vous empêcher de déboguer votre propre point de vue plus que cela, puisque je pense qu'il serait préférable d'utiliser
loginView code>.
Essayez une méthode de rendu LI Ceci
def my_view(request): username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) # Redirect to a success page. render(request , 'bootstrap/page_learn.html') else: # Return an 'invalid login' error message. render(request , 'bootstrap/page_learn.html')
J'en ai juste besoin pour revenir à la même page après la connexion non redirigée vers la page d'accueil
Je pense qu'aucun besoin de demande dans authentifier B> fonction
Je l'ai supprimé mais toujours le même résultat