0
votes

Connexion utilisateur Redirection toujours à la page d'accueil

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> xxx pré>

formulaires.py: p> xxx pré>

Je veux dire que ça va toujours dans ce cas: P>

if  is_safe_url(redirect_path, request.get_host()):
            return(redirect(redirect_path))


2 commentaires

Je pense qu'aucun besoin de demande dans authentifier fonction


Je l'ai supprimé mais toujours le même résultat


3 Réponses :


0
votes

Vous devez utiliser

redirect_path = next_get_url ou next_post_url ou "/"

Parce que si vous passez Aucun à is_safe_url , il retournera false car il ne prend que des URL valides.


5 commentaires

ça va toujours à "/" J'ai besoin du contraire


Essayez l'impression is_safe_url (redirect_path, demande.get_host ()) . Il retournera false si votre demande n'a pas next_get_url ou next_post_url . C'est pourquoi vous devez changer cette ligne. Qu'est-ce que impression (utilisateur) 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 , ou vous pouvez simplement le définir dans la vue elle-même, Si vous voulez le contrôler du backend.



1
votes

Premièrement, Django est livré avec un loginView 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 dans votre contexte Dictionnaire 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 : xxx


2 commentaires

Alors, comment faire la prochaine page que j'étais avant de vous connecter?


Inclure Suivant dans le contexte du modèle, par exemple contexte ['Suivant'] = redirect_path . 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 .



0
votes

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')


1 commentaires

J'en ai juste besoin pour revenir à la même page après la connexion non redirigée vers la page d'accueil