Résolue

Modification de l'email sur la vue profile

# Django

Gabriel Trouvé

Mentor

Dernière question (de la soirée) promis ! lol


Dans la vue d'édition du profil,


Dans la vidéo dans le if is_valid on ne touche pas à l'email. Et j'ai voulu quand même rajouter un user.email = request.POST.get("email"). Et ça ne fonctionne pas. Lorsque je modifie l'email je passe dans le else et ça me sort le message d'erreur.

Ce qui bloque c'est peut-être le fait que email c'est le champ USERNAME_FIELD de mon modèle ?



def profil(request):
    if request.method == "POST":
        # vérifier si le bon mdp est entré
        is_valid = authenticate(email=request.POST.get("email"), password=request.POST.get("password"))
        if is_valid:
            user = request.user
            user.first_name = request.POST.get("first_name")
            user.last_name = request.POST.get("last_name")
            user.email = request.POST.get("email")
            user.save()
        else:
            # on va passer par messages, ils sont associés à la session de l'utilisateur, donc on peut les transporter
# mais si je boucle sur les messages ils sont supprimés ?
# même pas besoin de passer par le context. Une variable dans le html
            messages.add_message(request, messages.ERROR, "le mot de passe n'est pas valide.")

        return redirect("profil")

    # les valeurs initiales, utiliser model_to_dict() Mais on exclu le champ password
    form = UserForm(initial=model_to_dict(request.user, exclude="password"))
    return render(request, "accounts/profil.html", context={'form': form})




Merci d'avance ^^

Hello Gab,

Alors oui en l'occurence ici tu utilises l'email pour identifier un user donc effectivement je pense que c'est ça le problème. Donc ta requête tombe dans le else du "is_valid" et tu obtiens le message d'erreur que tu as forcé. Retire le else peut être pour voir en mode developpement pour générer l'erreur et son contexte.

Gabriel Trouvé

Mentor

Merci PA ça confirme ce que je pensais alors.
Je vais tester après alors. Je vais régler mon petit pblm de création de client côté stripe lol
Je clôture le ticket avant de tester.

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.