- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
yann
19 septembre 2023 - 19 septembre 2023 à 10:11
checkConversation résolue
6 réponses
forms.ValidationError ne fonctionne pas !
Bonjour, J'ai longuement lu et relu mon code je j'arrive pas afficher le message d'erreur dans ma page HTML. J'ai mis un print() comme vous pouvez le constater au dessus …
00:00:00 :Pour l'instant, dans notre formulaire, les seules vérifications qui sont faites sont faites au niveau principalement du HTML.Par exemple, au niveau de la validation de notre formulaire, on a mis quelques paramètrescomme la longueur maximale de notre pseudo ou la longueur minimale de notre password.
00:00:15 :Si on va voir dans notre page HTML, dans le code source, ce sont des vérifications qui vont être effectuées directement dans le HTML.Ici, par exemple, vous voyez qu'on a un attribut, minLength, qui est égal à 6.
00:00:25 :Donc ça, c'est pour le password. Et pour le pseudo, on a un maxLength qui est égal à 8.Par défaut, vous voyez également que pour tous les champs dont on n'a pas spécifié required égale false,comme pour le pseudo, on a ce required qui indique que le champ est nécessaire.
00:00:38 :Donc si on ne rentre pas quelque chose dans ce champ, notre formulaire ne sera pas accepté.Tout ça, c'est des vérifications qui sont faites du côté client, directement dans le navigateur, avant même que le formulaire soit soumis.
00:00:50 :Par exemple, ici, si je mets quelque chose pour mon pseudo, que je rentre un email qui n'est pas valide et que je clique sur s'inscrire,vous voyez que là, on a une petite fenêtre qui s'affiche et qui nous dit qu'il faut avoir un arrobase dans l'email.
00:01:01 :Donc là, je vais valider en mettant un arrobase et une adresse email valide.Si j'essaie de continuer, là, on va nous dire que ce champ est requis.
00:01:08 :Donc je vais devoir, là encore, rentrer les données, etc.Donc tout ça, c'est des choses qui sont effectuées avant même que le formulaire soit soumis.
00:01:16 :Donc ça, c'est la première étape de la validation qui est faite au niveau du client, donc directement dans votre navigateur.Par exemple, il se peut qu'on ait envie de vérifier d'autres données.
00:01:26 :Donc par exemple, de vérifier que le pseudo soit sous le bon format.Pour ça, on va pouvoir rajouter des méthodes à l'intérieur de notre classe pour vérifier le format de notre pseudo.
00:01:34 :Donc ça, c'est des vérifications qui vont être faites du côté du serveur, cette fois-ci, une fois que l'on va valider le formulaire.Donc ça, c'est quand on va dans la vue ici, quand on fait IsValid.
00:01:52 :Donc je vais aller dans mon formulaire ici et je vais rajouter une méthode.Alors attention, le nom est très important ici.Il faut que la méthode commence par le nom clean avec un tiré du bas et ensuite le nom du champ que l'on souhaite vérifier.
00:02:03 :Donc dans ce cas-ci, le pseudo, si je voulais vérifier le cguaccept, je mettrais ici à la place de pseudo cguaccept.Donc dans ce cas-ci, je veux vérifier le pseudo et ce que je vais faire ici, c'est accéder aux fameuses cleaned data,donc ces datas ici qui sont les données nettoyées que notre formulaire va avoir récupérées.
00:02:20 :Donc je vais utiliser self.cleaneddata et donc ça c'est un dictionnaire et sur ce dictionnaire, on va récupérer donc le pseudo.Donc je rentre la clé pseudo et je vais récupérer ça dans une variable pseudo.
00:02:31 :On va faire ici une vérification, donc on va vérifier si on a un symbole dollar par exemple dans notre pseudo.Donc si on a un dollar dans le pseudo, eh bien on va considérer que le pseudo n'est pas valide.
00:02:41 :Donc ce qu'on va faire ici, c'est lever une erreur avec raise et cette erreur, ça va être une erreur contenue à l'intérieur du module form,ce qui est une erreur validation error.
00:02:49 :Et à l'intérieur des parenthèses ici, on va indiquer le message de l'erreur, comme vous le voyez ici, il me le suggère.Donc message, ça va être ce qui va être affiché en fait dans notre interface si le formulaire n'est pas validé.
00:03:00 :Donc dans ce cas-ci, je veux dire le pseudo ne peut pas contenir deux dollars.Et si on n'a pas cette erreur, donc si on n'a pas deux dollars dans le pseudo, eh bien on va tout simplement retourner la valeur du pseudo,donc la valeur qui va être envoyée à mon formulaire que je vais récupérer dans cleaned data.
00:03:16 :Donc ça, c'est ma validation pour le pseudo.Donc vous allez voir, quand je vais aller dans views ici, quand on va faire isValid, Django va vérifier que nos données sont valides.
00:03:30 :Donc je vais vous montrer tout ça.On revient sur la page, je vais relancer la page, je mets un pseudo, donc je vais mettre un dollar ici à la fin.
00:03:37 :Je mets une adresse email valide, un mot de passe, et je clique sur s'inscrire.Et là, vous voyez qu'on a bien notre phrase qui s'affiche, le pseudo ne peut pas contenir deux dollars.
00:03:51 :Donc là, on a fait un print de forum.cleanedata, et en plus, on retournait le HTTP response.Donc ça, ça nous prouve bien qu'on ne passe pas à l'intérieur de cette structure conditionnelle, puisque si nos données sont validées,eh bien on arriverait sur la page qui nous affiche, merci de vous être inscrit au site.
00:04:04 :Donc vous voyez que là, le formulaire n'est pas validé, puisque ici, cette condition n'est pas validée.Donc là, je vais enlever le symbole de large, je vais remettre un mot de passe, je clique sur s'inscrire,et cette fois-ci, ça fonctionne bien, on a bien les données qui sont affichées, et la page qui s'affiche ici.
00:04:18 :Donc vous voyez que c'est très pratique de pouvoir rajouter comme ça des validations,que l'on va faire du côté du serveur cette fois-ci.Donc ça permet d'avoir des validations qui sont faites très rapidement au niveau du client,avec les paramètres que l'on a spécifiés ici, donc des choses assez basiques,
00:04:32 :comme par exemple la longueur du mot de passe ou du pseudo, ou est-ce qu'on a bien entré une adresse email ici,ça c'est des choses qui sont déjà très faciles à vérifier au niveau du HTML,donc vous n'avez pas envie de développer tout ça de votre côté du serveur,
00:04:45 :donc ça c'est possible de le faire directement avec les paramètres,et ensuite on peut très bien rajouter des étapes de validation qui vont être faites au moment où on soumet le formulaire.
00:04:54 :Bien entendu, ces conditions ici peuvent être beaucoup plus complexes,on pourrait rajouter des structures conditionnelles, vérifier beaucoup plus de choses,et également vérifier d'autres champs, là on a juste fait le pseudo,mais on pourrait également vérifier n'importe quel champ ici,pour s'assurer qu'il soit conforme à ce que l'on attend de ce formulaire.
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.