- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :On va faire différentes choses. On va déjà récupérer les informations de l'utilisateurpour les passer à notre formulaire, puisque par défaut vous voyez qu'on n'arien qui est affiché. On va vouloir afficher l'adresse e-mail, le nom et le prénom,
00:00:12 :si on a ces informations dans notre base de données. Donc l'e-mail, on va l'avoirpuisque c'est obligatoire, mais on va également afficher le prénom et le nomsi on les a, pour ne pas avoir des champs vides ici.
00:00:21 :Également, ce qu'on va faire, c'est que là, pour l'instant, si j'écris dans le champdu mot de passe, vous voyez qu'on a le mot de passe qui est affiché en clair.
00:00:27 :Donc on va faire toutes ces petites modifications et on va également récupérerles informations du formulaire quand on va cliquer sur sauvegarder pour les modifierdans la base de données. Donc la première chose à faire, c'est sur notre formulaire
00:00:37 :ici, de rajouter, de modifier le formulaire du mot de passe.Donc on va l'écraser ici, on va dire password égale, et à partir de froms,on a un charField, donc ça ressemble grandement à ce qu'on a sur les modèles,sauf que là, c'est à l'intérieur des formulaires. Et ce qu'on va faire ici,
00:00:52 :c'est modifier le widget. Donc on va dire widget égale à from.passwordInput,et donc ça c'est très pratique puisque ça va nous permettre de modifier les formulairesque l'on a d'afficher ici. Donc plutôt que d'avoir un input de type texte par défaut
00:01:05 :dans lequel on voit ce qu'on écrit, on va modifier le widget en utilisantun passwordInput. Donc si j'actualise, là vous voyez que cette fois-ci,on a bien le mot de passe qui est caché. Ensuite, comme je vous disais,
00:01:16 :on va passer les informations de base qu'on a sur notre modèle d'utilisateurà notre formulaire. Donc pour ça, on va revenir dans la vue et on va passer
00:01:23 :des valeurs initiales avec le paramètre qui s'appelle tout simplement initial.Et ce paramètre initial, on va devoir lui passer un dictionnaire.Par exemple, on pourrait passer ici firstName et dire que firstName est égaleà Patrick. Et si je reviens dans ma vue que j'actualise, vous allez voir
00:01:38 :qu'on a bien maintenant Patrick qui est directement affiché comme valeur initiale.Donc nous ce qu'on veut, c'est bien entendu ne pas mettre Patrick,mais on veut mettre les données de notre utilisateur,donc l'utilisateur qui est dans request.user.
00:01:50 :Donc on pourrait le faire à la main en faisant ici par exemplefirstName égale request.user.firstName pour chacun des champs,mais ce serait un peu long. Imaginez qu'on ait un profil d'utilisateur
00:01:59 :beaucoup plus fourni avec pas mal de champs. On n'a pas envie de faire tout çaà la main à chaque fois. Donc ce qu'on va faire, c'est à la place
00:02:05 :utiliser une fonction qui s'appelle modelToDict qui, comme son nom l'indique,nous permet de transformer un modèle en dictionnaire.Donc on va l'importer, option entrée, elle est à l'intérieur de Django.forms
00:02:16 :et on va lui passer l'instance que l'on souhaite transformer en dictionnaire,donc request.user qui correspond à l'instance de l'utilisateur,et on va également rajouter le paramètre exclude puisqu'on ne souhaite pasinclure à l'intérieur de ces données le mot de passe.
00:02:30 :Puisque si vous vous souvenez bien, l'idée ici c'est que l'utilisateurrende son mot de passe et ensuite qu'on vérifie que le mot de passeest le bon pour pouvoir sauvegarder ces changements.
00:02:38 :Donc si j'actualise, cette fois-ci on a bien l'adresse emailqui est correctement renseignée, le prénom et le nom, on n'avait riendans notre base de données donc c'est normal qu'on ait rien,et le mot de passe on l'a exclu donc là encore c'est normal.
00:02:48 :Donc maintenant ce qu'on va faire c'est traiter les données du formulairedans cette vue ici, donc cette même vue, quand elles sont envoyéesavec le clic sur le bouton sauvegarder.
00:02:56 :Tant que j'y pense, je vais rajouter également le CSRF token,sinon Django va nous taper sur les doigts en nous disant qu'il manque ce token.
00:03:03 :Donc ce qu'on va faire ensuite c'est récupérer ces données qui sont fourniespar le formulaire, comme on n'a pas mis ici l'attribut action,par défaut ça va renvoyer vers cette même URL, donc l'URL profile,qui va donc renvoyer vers cette vue profile.
00:03:16 :Donc là ce qu'on va devoir faire c'est faire une structure conditionnellepour savoir quand est-ce qu'on est dans le cas où on envoie des donnéesdu formulaire et quand est-ce qu'on est juste dans le cas où on accède à la page.
00:03:25 :Donc pour ça on va pouvoir vérifier le type de requête avec request.methodet si c'est une requête de type post, ça veut dire qu'on est en présenced'un envoi du formulaire.
00:03:34 :Ce qu'on va faire ensuite c'est vérifier que l'utilisateur a rentréle bon mot de passe, pour ça on peut utiliser la fonction authenticatequ'on avait déjà utilisée dans ce fichier, si je la cherche à l'intérieur du fichier,vous allez voir qu'on l'a déjà utilisée lors du login de l'utilisateur.
00:03:48 :On vérifiait que les données envoyées pour le username et le passwordétaient les bons et si c'était le cas, on connectait l'utilisateur.Donc là on va utiliser cette fonction juste pour vérifier que les informationssont les bonnes.
00:03:59 :Donc on va récupérer dans le champ email request.postet on va récupérer le champ email.Donc là ça va être le même nom du champ que celui qu'on avaità l'intérieur de notre modèle, donc on avait email et passwordet donc c'est ces données qu'on va récupérer.
00:04:13 :Si vous voulez les voir au niveau du html, on peut faire un clic droit inspectet aller inspecter ces champs.Vous pouvez sur Chrome cliquer sur la petite icône iciet ça va vous permettre de sélectionner un élément de votre page web.
00:04:25 :Donc si je clique ici, on voit qu'on a bien un input de type passwordet le nom qui est ce qui nous intéresse ici c'est password.
00:04:31 :Et si on remonte pour l'adresse email, on a name égale à email.Donc c'est ce nom qu'on utilise pour récupérer les données à partir de ce dictionnaire,donc le dictionnaire request.post.
00:04:40 :Donc ça va nous permettre ici de récupérer la valeur qui est à l'intérieur du champ d'emailet on va faire pareil avec le mot de passe, donc password égale request.post.get
00:04:48 :et password.Donc si tout ça c'est valide, on va le récupérer dans une variable,on va dire isValid égale à authenticate de tout ça.Et si c'est valide, donc if isValid,eh bien on va modifier les informations de l'utilisateur.
00:05:01 :Donc la première chose qu'on va faire c'est récupérer dans une variable que je vais appeler user l'utilisateur,donc ça c'est juste pour avoir un raccourci pour ne pas avoir à chaque fois à taper request.user.
00:05:10 :On va ensuite modifier donc les différentes informations,donc on va faire user.firstname égale à request.post.getet on va récupérer ici le firstname.On va faire pareil pour le lastname et pour tous les autres champs qu'on pourrait avoir.
00:05:24 :Donc là on n'a que deux champs, donc je le fais de cette façon.Si on avait beaucoup plus d'informations, on pourrait le faire autrement,on pourrait par exemple modifier les attributs de notre instanceen les mettant à jour avec le dictionnaire request.post.
00:05:35 :Donc il y a différentes façons de faire ici.Pour l'instant j'ai juste deux éléments ici, donc je vais le faire de façon très simple ici,juste en modifiant directement ces attributs.
00:05:42 :Et pour finir, eh bien on va tout simplement sauvegarder notre utilisateur.Et si ce n'est pas valide, on affichera un message d'erreur.Pour l'instant je vais juste mettre un pass et on y reviendra par la suite.
00:05:51 :On a un système en fait de message avec Django qui est prévu pour ça,mais pour l'instant je veux juste déjà tester qu'on a bien tout qui fonctionneavec les données qui sont valides.
00:05:59 :Et pour finir je vais juste faire une redirection,puisque si on ne met pas un return ici,on va continuer avec la création d'un nouveau formulairequ'on va passer à notre vue.
00:06:07 :Donc moi ce que je vais faire, c'est faire un returnet rediriger vers la vue de profil, tout simplement.Donc on va rediriger vers cette même vue,mais cette fois-ci on aura une requête de type get,donc on ne va pas repasser dans cette structure conditionnelleet on va juste créer un formulaire
00:06:21 :qui sera cette fois-ci avec les bonnes données de l'utilisateuret qu'on va donc pouvoir afficher.Donc je reviens sur ma page,je vais actualiser pour voir si tout fonctionne bien.
00:06:30 :On a le prénom, donc je vais mettre ici Thibaut,je vais laisser le nom de famille videet on va rentrer notre mot de passe.
00:06:37 :Je clique sur sauvegarder,on est bien redirigé vers la page,le mot de passe n'est pas entréet on a bien le prénom qui a été modifié.
00:06:44 :Donc la modification fonctionne,je vais tester avec d'autres informations ici,je vais rentrer le mot de passe, ça fonctionneet si on met un mauvais mot de passeet que je clique sur sauvegarder,donc là on a l'impression que ça marche,mais en fait ça ne marche pas.
00:06:56 :Si j'essaye de changer et de mettre Martin ici par exemple,je mets un mauvais mot de passe,je clique sur sauvegarder et là vous voyez qu'on revient bienavec le nom qu'on avait auparavant.
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.