Django #12 - formulaires (2/2) — Transcript
Full transcript
- 0:15bonjour à tous bienvenue sur la seconde
- 0:16partie consacrée aux formulaire avec
- 0:18Django une vidéo un peu plus courte
- 0:20cette fois mais on va revenir un peu
- 0:22plus en détail sur la validation des
- 0:24formulaires et on va regarder comment
- 0:25personnaliser éventuellement ici
- 0:28l'occasion se présente et bien comment
- 0:30on va se procéder en fait la validation
- 0:32de notre formulaire que ce soit sur un
- 0:34champ en particulier ou même sur un
- 0:36ensemble de champs si par exemple vous
- 0:37aviez des champs de formulaires qui
- 0:39doivent fonctionner ensemble en tout cas
- 0:40qui ont une relation entre par rapport à
- 0:43ce qu'il faut saisir on va revenir déjà
- 0:45sur le formulaire je vais refaire un
- 0:46petit point un petit rappel pour aller
- 0:48un peu plus en aussi au niveau des
- 0:49explications précédentes pour revenir un
- 0:51petit peu sur ce qui concerne la
- 0:53validation du formulaire lorsque vous
- 0:55allez soumettre le formulaire une fois
- 0:56qu'il a été saisi il va y avoir tout un
- 0:58tas de règles qui vont devoir être
- 1:00validé ces règles sont principalement en
- 1:02tout cas en priorité celles définies au
- 1:04niveau de la création du formulaire si
- 1:06vous en avez donc ça peut être comme on
- 1:08l'avait vu dans la séance précédente le
- 1:10fait de limiter à une taille un canon de
- 1:12caractère maximum le fait de rendre le
- 1:15ce genre de choses et bien évidemment en
- 1:17dernier lieu nous avons les contraintes
- 1:19finalement donc toutes les règles que
- 1:21nous avons défini au niveau du modèle
- 1:23donc là par exemple si je regarde au
- 1:25niveau du livre on voit qu'on avait déjà
- 1:27pour le titre indiqué qu'il fallait une
- 1:29longueur en fait de titre maximum 32
- 1:32vous remarquez également au niveau de la
- 1:34quantité qu'on a par défaut une valeur
- 1:36de 1 donc si nous avons déjà ces
- 1:38informations au niveau du modèle on
- 1:40n'est pas obligé de le remettre ici
- 1:41c'est pour ça que là par exemple au
- 1:42niveau du livre je n'ai pas rien indiqué
- 1:44à nouveau qui nous fallait un champ pour
- 1:46le titre d'une certaine taille puisque
- 1:48c'est déjà présent au niveau du modèle
- 1:50si je viens ici au niveau de la joue on
- 1:52peut voir que si j'essaye de faire un
- 1:54titre
- 1:55vraiment trop long
- 1:58et là vous voyez je ne peux plus saisir
- 1:59donc je suis bien 32 caractères maximum
- 2:01et même si on essaye de détourner le
- 2:03système comme vous avez montré
- 2:05précédemment on va ici il est où il est
- 2:09là
- 2:13il est pas là
- 2:15ici
- 2:17comme par exemple 320 au maximum donc là
- 2:20on a de la marge on va pouvoir dépasser
- 2:25au niveau du formulaire ici j'essaye
- 2:27bien sûr de soumettre ce dernier on voit
- 2:30que c'est bien un par défaut comme défi
- 2:31dans le modèle et bien on a bien un
- 2:33message d'erreur qui nous indique que
- 2:35l'on peut pas en fait dépasser et bien
- 2:36ce qui a été défini au niveau du modèle
- 2:38donc on a une sécurité à ce niveau là
- 2:40qui ne peut pas être contournée par
- 2:41l'utilisateur au niveau du formulaire il
- 2:44y a pas de problème tout est géré il n'y
- 2:45a pas de souci et on est sûr en fait
- 2:47d'avoir une garantie en fait sur
- 2:49l'intégrité des données sur côté correct
- 2:52en tout cas des données qu'on va vouloir
- 2:53faire saisir à l'utilisateur
- 2:56ce qui va être intéressant c'est de voir
- 2:58qu'on va pouvoir changer tout ça les
- 3:00données quand vous allez saisir en fait
- 3:01le formulaire il faut qu'elle soit
- 3:02nettoyée c'est le terme qui est utilisé
- 3:04ici au niveau de Django une fois que
- 3:06toutes les données du formulaire sont
- 3:07nettoyées elles se la valide si vous
- 3:10voulez le formulaire et on peut ensuite
- 3:11bien procéder aux différentes
- 3:12traitements et c'est ce que nous avions
- 3:14fait notamment au niveau de la vue donc
- 3:15on n'a pas être simplement la méthode is
- 3:17valide s'embête pas à ce niveau là juste
- 3:19une méthode et ceci normalement ne doit
- 3:22retourner ou dedans en tout cas
- 3:23déclencher aucune exception aucune
- 3:24erreur et dans ce cas précis s'il n'y a
- 3:27aucune erreur de déclencher c'est que
- 3:29toutes les données ont bien été
- 3:29nettoyées toutes les données a été
- 3:31validées et dans ce cas là on entretient
- 3:32dans notre condition et on peut
- 3:34effectuer le traitement que l'on veut il
- 3:35y a pas de problème donc ça c'est la
- 3:37partie on avait vu principalement en
- 3:39tout cas ça fonctionnera très souvent
- 3:40comme ça puisque vous allez encore une
- 3:42fois définir des règles principalement
- 3:43au niveau des modèles voir au niveau du
- 3:45formulaire et ça va couvrir en tout cas
- 3:47énormément de ce cas et de scénarios en
- 3:49tout cas possible voilà donc lorsque
- 3:51vous appelez la méthode is valide on a
- 3:53le nettoyage des données qui est
- 3:54effectué et à partir de là on on peut
- 3:56procéder au traitement que l'on veut
- 3:57donc ça on peut le voir alors on a
- 4:00d'autres méthodes on pourrait également
- 4:01faire directement accès à une attribut
- 4:04il y a un attribut d'erreur en fait pour
- 4:05le au niveau du formulaire on a même
- 4:07d'autres méthodes sont utilisées mais
- 4:09celle-là pour le coup est vraiment la
- 4:11plus pratique par rapport à la
- 4:12validation de nos formulaires et nous on
- 4:14va aller un petit peu plus loin parce
- 4:15qu'on va voir un petit peu ce qui se
- 4:16passe déjà on écrivant nos propres
- 4:18règles de validation et en voyant bah
- 4:20justement dans Qu'est-ce qui en fait
- 4:22génère une erreur lorsqu'on veut saisir
- 4:24quelque chose qu'en fait nous avons une
- 4:25exception avec un message d'erreur pour
- 4:27informer l'utilisateur en tout cas du
- 4:29pourquoi de l'erreur et de voir un petit
- 4:30peu ce qu'on peut faire avec tout ça on
- 4:32va déjà appliquer l'exemple avec
- 4:34finalement le personnaliser si vous
- 4:37voulez une règle de validation pour un
- 4:39champ en particulier on va regarder un
- 4:40petit peu tout ça pour voir ce que ça
- 4:42nous donne
- 4:43on va aller dans le formulaire ici
- 4:46et vous allez créer pour un champ en
- 4:48particulier donc je rappelle propre à
- 4:49son nom le nom du champ en question donc
- 4:51là on en a trois concernant le livre
- 4:52appliquer une règle de validation
- 4:54personnalisée pour ce dernier moi par
- 4:56exemple je vais le faire au niveau de la
- 4:58quantité alors encore une fois je peux
- 5:00pas forcément des exemples qui ont du
- 5:01sens je fais surtout des exemples qui
- 5:02sont très simples et qu'ensuite vous
- 5:04pourrez largement et facilement adopter
- 5:05adapté en tout cas à des exemples plus
- 5:08utiles plus concrets dans votre propre
- 5:09application je vais laisser ça ici je
- 5:12vais créer une méthode def et toutes les
- 5:15méthodes de validation personnalisées
- 5:17vont commencer par clean le tiret du bas
- 5:19donc underscore et ensuite le nom du
- 5:21champ que vous voulez en fait vérifier
- 5:23en tout cas faire nettoyer en
- 5:24particulier donc nous c'est celui-ci
- 5:26pour être sûr voilà un petit
- 5:28copier-coller comme ça il y a pas de
- 5:30problème nous sommes cette fois-ci dans
- 5:31cette méthode donc de la classe bookford
- 5:34qui est propre au formulaire concernant
- 5:36les livres pour pouvoir effectuer une
- 5:38validation autre en tout cas que celle
- 5:40qui est effectuée par défaut par rapport
- 5:42aux règles encore une fois définies au
- 5:43niveau du modèle donc notamment ici et
- 5:46pour l'auteur parce que l'auteur et vous
- 5:48avez vu rattaché à un livre dans tous
- 5:49les cas
- 5:50ici on va avoir besoin déjà de récupérer
- 5:52l'information on passe généralement par
- 5:55un dictionnaire il y a toutes les
- 5:56informations transit à un dictionnaire
- 5:58et on peut récupérer ça dans une
- 5:59variable ce sera surtout va de réécrire
- 6:01à chaque fois toute l'intitulé du
- 6:03dictionnaire ça part évidemment du
- 6:06formulaire en question et nous avons un
- 6:08dictionnaire qui s'appelle clean donc
- 6:09attention prétérit data et là vous allez
- 6:13indiquer bien le nom du champ puisque
- 6:15ici ça ne change pas comme ça nous
- 6:17récupérons ça dans cette variable et ce
- 6:18sera plus pratique à manipuler
- 6:19maintenant vous avez cette quantité vous
- 6:22pouvez faire tout un tas de choses
- 6:23dessus vous pouvez vérifier vous pouvez
- 6:25inclure une règle précisément ici par
- 6:27exemple on va faire une règle un peu
- 6:28particulière encore une fois qu'il y a
- 6:30pas beaucoup de sens mais c'est pour
- 6:31voir un petit peu comment tout ça
- 6:32fonctionne en disant que si la quantité
- 6:34est inférieure strictement ou égal à 0
- 6:38ou que la quantité est supérieure à 100
- 6:42par exemple pour indiquer que le livre
- 6:44doit être en fait on doit on doit
- 6:45ajouter quand on ajoute un livre on doit
- 6:47ajouter une quantité entre 1 et 100 pas
- 6:49moins et pas plus et bien dans ce cas là
- 6:51donc là si on est effectivement moins de
- 6:530 ou plus de 100 on va déclencher une
- 6:57exception et pas n'importe quelle
- 6:58exception ce que ça part évidemment des
- 7:00formulaires et c'est une un type bien
- 7:02précis qui est validation
- 7:03error et là vous mettez votre message
- 7:05d'erreur par exemple
- 7:07engométait ça vous doit la quantité ne
- 7:10devrait pas donc généralement c'est du
- 7:11conditionnel la quantité
- 7:14d'ajout enfin la quantité du livre
- 7:18doit être comprise
- 7:20entre 1 et 100 comme ceci et bien
- 7:25évidemment s'il y a pas de problème
- 7:27on retourne c'est important ce que ça
- 7:29pourrait être éventuellement utiliser
- 7:30pour d'autres parties d'applications et
- 7:32de la validation on retourne bien sûr
- 7:33cette quantité donc nettoyer d'accord
- 7:35donc là ça c'est nettoyage qui est fait
- 7:37de manière par défaut d'accord générique
- 7:40donc on récupère ceci et ensuite nous on
- 7:42applique une règle supplémentaire vous
- 7:44voyez en temps normal il ferait juste ça
- 7:45au niveau de nettoyage qu'on faisait
- 7:47jusqu'à présent pour va défaire valider
- 7:48le formulaire là on récupère sa donnée
- 7:50qui a déjà été faite en amont et nous on
- 7:53applique cette règle là on vérifie on
- 7:55effectue en tout cas le test de cette
- 7:57expression pour ajouter cette
- 7:58expérimenté qui permettra de valider ou
- 8:00non et bien ce champ du formulaire une
- 8:03fois qu'on a ça on a en fait un petit
- 8:05peu toute l'information que l'on veut
- 8:07on va retourner là parce qu'il y a pas
- 8:08de modification à faire donc on va
- 8:09directement actualiser la page ici et on
- 8:12va tenter d'ajouter un livre
- 8:18la dernière fois
- 8:20Akira je vais mettre par exemple 0 alors
- 8:23là on verra qu'on a des un peu
- 8:24particulier pour zéro et là la quantité
- 8:26du livre doit être comprise entre 1 et
- 8:28100 d'accord si je mets bien sûr sans 1
- 8:31ça ne marche pas ici je mets 100 donc ça
- 8:34fait un sacré stock là évidemment ça a
- 8:36été ajouté sans problème quand j'étais
- 8:38sans et je peux vérifier si sur la fiche
- 8:40ça correspond bien donc il peut être
- 8:42problème on a pu ajouter ce livre nous
- 8:44avons ajouté une nouvelle règle de
- 8:45validation au niveau du formulaire vous
- 8:47voyez qu'à nouveau on n'a pas touché au
- 8:48modèle puisque ça ce sont les toutes les
- 8:50définitions de base on y touche très
- 8:52très rarement on le fait une fois pour
- 8:54toutes et à moins de faire tout un gros
- 8:55changement par la suite
- 8:57ultérieurement mais attention à ça on
- 8:59modifie à ce moment là au niveau du
- 9:01modèle mais sinon une fois qu'il est
- 9:02fait il est fait au niveau des vues
- 9:04c'est de l'affichage donc là ça
- 9:05changeait pas donc c'est vraiment au
- 9:06niveau du formulaire qu'on change qu'on
- 9:08ajoute éventuellement des validations
- 9:10personnalisées propre à un champ ici en
- 9:12particulier si je voulais faire une
- 9:14validation en plus sur le champitole
- 9:16vous faites une une méthode clean
- 9:18underscore title vous avez compris le
- 9:19principe et après ici vous faites tous
- 9:21les tests que vous voulez rappelez-vous
- 9:22c'est du Pyton vous avez appris à
- 9:25programmer dans ce langage et ensuite
- 9:26surtout vous n'oubliez pas de retourner
- 9:27voilà donc ça c'est on va dire le strict
- 9:29minimum vous récupérez le champ en
- 9:31question depuis le dictionnaire clean
- 9:33data et vous le retournez à la fin s'il
- 9:34y a pas eu de problème il faut qu'un
- 9:36moment donné si ça n'a pas validé vos
- 9:38tests et bien que ça déclenche une
- 9:41exception forme point validation
- 9:43error c'est important d'avoir son
- 9:45fonctionnement là donc ça c'est ta voix
- 9:47voilà donc ça c'est le plus simple vous
- 9:50avez vu c'est pas compliqué c'est
- 9:52vraiment le truc le plus pratique si
- 9:53vous avez vraiment un champ en
- 9:54particulier vous voulez faire un test
- 9:55supplémentaire vous pouvez procéder
- 9:57comme ça il y a pas beaucoup de codes à
- 9:58écrire en plus et ça suffira largement
- 10:01maintenant comme je le disais pour la
- 10:02deuxième et dernière partie de cette
- 10:04vidéo vous pourriez avoir des champs qui
- 10:06sont reliés ensemble par exemple alors
- 10:08moi je vais faire une règle un peu
- 10:09bizarre dire par exemple dans le cas où
- 10:11le livre commencerait par Dragon Ball et
- 10:14de dire que un livre qui commence par
- 10:15Dragon Ball donc encore une fois ça a
- 10:17pas de sens un an le réel si on faisait
- 10:18ça en vrai on ne doit pas avoir une
- 10:20quantité inférieure à 10 par exemple
- 10:21voilà on estime donc si on ajoute ce
- 10:23livre les gens aiment tellement il faut
- 10:24au moins qu'on ajoute un stock de
- 10:25minimum 10 litres parce que si on en
- 10:27ajoute moins on va très vite être en
- 10:28rupture de stock et les gens vont pas
- 10:30être contents vous savez comment ça se
- 10:31passe ce serait Twitter tout ça bref
- 10:33c'est un peu compliqué donc on va
- 10:36partir du principe qui a une relation
- 10:37directe entre le titre du livre et la
- 10:40quantité pour dire voilà si c'est un
- 10:41livre Dragon Ball peu importe lequel on
- 10:44tourne ajouter au minimum 10 et pas
- 10:46moins donc on peut on a une relation
- 10:48entre les deux si vous avez bien compris
- 10:49jusqu'à présent vous avez vu quand on
- 10:51utilise ici une méthode qu'on définit
- 10:52une méthode c'est propre à un champ en
- 10:54particulier si là je veux travailler
- 10:55après avec directement par exemple le
- 10:58titre c'est pas pratique parce que ici
- 11:00c'est censé faire la validation de la
- 11:01quantité pas autre chose c'est indiqué
- 11:03dans le nom sinon on aurait mélangerait
- 11:05tout et n'importe quoi et on aurait à
- 11:07coup sûr des erreurs je pourrais
- 11:08éventuellement faire à nouveau une
- 11:10méthode ici le problème c'est qu'on se
- 11:12retrouve avec le même souci on va
- 11:14pouvoir effectivement contrôler le titre
- 11:15en question mais pas forcément la
- 11:17quantité par rapport au titre vous voyez
- 11:18ou alors vous allez avoir des doublons
- 11:20donc ça va rajouter beaucoup beaucoup de
- 11:22côtes pour rien
- 11:23dans ce cas là ce qu'on peut faire alors
- 11:25je vais mettre en commentaire même si on
- 11:27pourra le changer après le remettre par
- 11:29la suite ce qu'on va voir que ça peut
- 11:30rester sans problème je peux utiliser
- 11:32une autre méthode un peu plus complète
- 11:34par contre il m'a mis
- 11:37quand même mis ça comme ça c'est bon
- 11:39c'est que maille tout décalé mais non
- 11:42d'utiliser la méthode clean voilà
- 11:48donc celle-ci est normalement appelé
- 11:49cette méthode parce qu'en fait on est en
- 11:51train de la surcharger il y a une
- 11:52méthode qui existe de base pour ça comme
- 11:54pour chacune donc on réécrit en fait une
- 11:56autre une autre méthode elle est appelée
- 11:59quand justement toutes les méthodes
- 12:00comme ça qui peuvent exister ont été
- 12:02validés évidemment de toute façon s'il y
- 12:04a une erreur déclenchée on va pas aller
- 12:05bien loin donc ça valide en premier lieu
- 12:08toutes les méthodes là pour des champs
- 12:09en particulier et ça si vous voulez
- 12:10c'est un peu la validation personnalisée
- 12:12mais globale plus globale plus générale
- 12:14et d'ailleurs si on a une erreur qui est
- 12:16déclenchée ici le message d'erreur sera
- 12:18affiché au niveau du champ particulier
- 12:20là où on aura quelque chose qui est
- 12:21propre au formulaire de manière générale
- 12:23voyez ça va pas concerné en fait une
- 12:25erreur propre à un champ seulement mais
- 12:27plus l'ensemble du formulaire même si on
- 12:29peut on pourrait tricher entre
- 12:30guillemets en mettant le message
- 12:32d'erreur en l'affichant un petit peu où
- 12:33on veut au niveau d'un champ en
- 12:35particulier mais par défaut le
- 12:36comportement sera de l'afficher au
- 12:37niveau global du formulaire
- 12:40ici on va pouvoir contrôler pas mal de
- 12:41choses alors là le problème enfin le
- 12:43problème ce qu'il faut ce qu'il faut
- 12:45savoir ici c'est que si éventuellement
- 12:46le champ n'existe pas qu'on a une valeur
- 12:48par exemple qui a pas été validée mais
- 12:50ici on va en fait avoir une erreur qui
- 12:52va être déclenchée ça va poser problème
- 12:53on aura une qui est erreur en fait et on
- 12:55aura donc pas récupéré ce qu'on voulait
- 12:56puisque le champ n'existera pas
- 12:59l'information n'existera pas dans ce
- 13:00dictionnaire ici comme on ne veut pas ça
- 13:02on veut pas ce genre de problème en tout
- 13:03cas au niveau de du nettoyage complet on
- 13:06va plutôt utiliser la méthode GET un des
- 13:08dictionnaire donc là je vous ramène au
- 13:10cours au cours pailleton et la vidéo
- 13:13notamment concernant les dictionnaires
- 13:14puisqu'on a vu tout ça évidemment cette
- 13:16vidéo
- 13:17et on va récupérer le champ en question
- 13:18qu'on veut donc ici taille je vais faire
- 13:23self ça ça ne change pas clean data mais
- 13:27ici on va utiliser get l'avantage de Get
- 13:29c'est que si le champ en question donc
- 13:31la valeur dans la clé spécifique
- 13:33n'existe pas ça retournera non et on
- 13:35aura donc pas d'erreur déclenchées donc
- 13:37ça va exactement très très bien avec ce
- 13:39qu'on voulait je fais ça comme ça
- 13:42une fois la quantité parce que là on
- 13:43travaille avec les deux données
- 13:47et voilà on récupère les deux s'il y en
- 13:50a une qui existe pas je vous dis ça
- 13:51retourne alors pourquoi je dis que ça
- 13:52peut retourner non par exemple le cas de
- 13:54la quantité notamment en mettant 0 vous
- 13:56savez qu'en informatique en par exemple
- 13:57on a un nombre donc une valeur numérique
- 13:58qui vaut 0 pourrait considérer en fait
- 14:00que il y a rien d'accord qui ne retourne
- 14:02rien parce qu'il part du principe il
- 14:03faut minimum 1 ou alors une valeur
- 14:05négative donc le zéro peut avoir un
- 14:07comportement des fois un peu particulier
- 14:08quand on quand on écrit des programmes
- 14:10des applications et pour être simplement
- 14:11à ne pas mettre la quantité dans le
- 14:15dictionnaire si vous mettiez une
- 14:16quantité de 0 alors que l'utilisateur
- 14:18peut au niveau du formulaire écrire 0 et
- 14:20ici alors l'ajout d'un livre c'est pas
- 14:21parce que c'est un par défaut qui peut
- 14:22pas faire ceci et ça pourrait
- 14:24éventuellement déclencher les erreurs
- 14:25qu'on ne veut pas parce qu'elles
- 14:26n'aurait pas de sens au niveau notre
- 14:27application je récupère le titre s'il y
- 14:30en a un je récupère une quantité s'il y
- 14:32en a une et ensuite on peut procéder à
- 14:34la validation alors là le plus simple
- 14:36c'est de vérifier que tout ça existe
- 14:38donc iftait
- 14:43voilà c'est le minimum et maintenant bah
- 14:46vous faites toutes vos validations
- 14:47d'accord classique donc là évidemment
- 14:51j'ai oublié mais à la fin on va le faire
- 14:52déjà avant un palouis que sinon en
- 14:54parlant je vais l'oublier et ça va être
- 14:55dramatique voilà on retourne clean data
- 14:58cette fois-ci d'accord donc tout à la
- 15:00fin et ici dans la condition bah vous
- 15:03faites vos différents tests donc moi par
- 15:04exemple quand je disais je vais faire un
- 15:06test comme ceci en disant
- 15:10si le titre commence par
- 15:14Dragon Ball attention on respecte bien
- 15:16ce que moi je mets une majuscule au
- 15:17début de chaque chose voilà comme ceci
- 15:19et que la quantité
- 15:22est strictement inférieure à 10 dans ce
- 15:25cas là
- 15:27je déclenche
- 15:29une erreur
- 15:32en disant
- 15:34minimum quand je mette un message plus
- 15:36court
- 15:38pour un livre Dragon Ball encore une
- 15:41fois quand j'étais Dragon Ball ça peut
- 15:42être Dragon Ball Z Dragon Ball super etc
- 15:44j'ai été peu importe pour ça que ça
- 15:46prend bien le Start Wiz par rapport à
- 15:48cette chaîne ça commence le nom de le
- 15:49titre du manga commence par ces deux
- 15:51termes il peut y en avoir d'autres à la
- 15:53suite bien évidemment donc comme je vous
- 15:55l'ai dit un test qui après pas beaucoup
- 15:56de sens c'est juste pour l'exemple pour
- 15:58avoir quelque chose qui est très simple
- 15:59bien sûr après vous vous testez ce que
- 16:01vous voulez si bien sûr il y a besoin de
- 16:02le faire sinon vous pouvez vous
- 16:03contenter du de la validation par défaut
- 16:05qui déjà encore une fois traite beaucoup
- 16:07beaucoup de choses par rapport à comment
- 16:09vous avez défini les règles au niveau du
- 16:11modèle donc là on a quelque chose de
- 16:13beaucoup plus propre d'accord pour cette
- 16:15partie là et on va pouvoir et bien
- 16:17procéder un petit peu à ça on va
- 16:20actualiser je vais faire ceci
- 17:05[Musique]
- 17:13[Musique]
- 17:17si je mets 10 c'est bon d'accord alors
- 17:20par contre il m'a mis clean data ah oui
- 17:22je l'ai peut-être pas
- 17:25j'ai fait des bêtises on refait oui
- 17:29voilà donc on amène Dragon Ball super
- 17:32Akira Toriyama et pour montrer que c'est
- 17:34propre cadre Dragon Ball donc si
- 17:35j'ajoutais n'importe quoi je mets
- 17:37vraiment un nom qui existe pas
- 17:39non inconnu voilà là par exemple ça
- 17:42marche voyez donc ça s'applique bien ça
- 17:45c'est normal c'est de la programmation
- 17:46donc le titre commençait pas par Dragon
- 17:48Ball donc là la quantité peut être
- 17:50inférieure à 10 il y a pas de problème
- 17:51tant que ça reste une quantité et bien
- 17:53par exemple bon qui ne serait pas ici
- 17:55inférieur à 0 ou autre sauf que j'ai
- 17:57commenté cette partie donc on va la
- 17:59décommenter tout le principe on va
- 18:01retirer ça on va retirer ça on va
- 18:04retirer celui-ci et on va remettre cette
- 18:07règle là qu'il y avait
- 18:09et là et bien les deux vont s'appliquer
- 18:11donc je peux faire ça
- 18:15tire Dragon Ball
- 18:18GT je l'ai enlevé
- 18:21on est d'accord si j'essaie de faire ça
- 18:22l'erreur globale effectivement il faut
- 18:24une info minimum 10 donc je peux prendre
- 18:269 8 etc même problème
- 18:29et par contre si je dépasse les 100
- 18:33et bien hop c'est la quantité qui est
- 18:35pas bonne donc il a bien traité
- 18:37également la validation personnalisée
- 18:39propre à la quantité en particulier donc
- 18:42vous pouvez cumuler vous pouvez avoir
- 18:43des vérifications à faire sur un champ
- 18:45de manière isolée c'est à dire que c'est
- 18:47indépendant les il n'y a pas besoin de
- 18:49tester sur un autre champ et s'il y a
- 18:51des champs qui sont en relation avec
- 18:52vous devez tester des choses entre eux
- 18:54d'accord vous le faites dans une seule
- 18:57et unique méthode clean là vous faites
- 18:58toutes vos vérifications comme je dis ça
- 19:00passera donc il va d'abord effectuer en
- 19:02fait les vérifications des méthodes
- 19:03clean underscore quelque chose un autre
- 19:05champ et à la fin une fois que tout est
- 19:07validé il passe à la méthode clean qui
- 19:10sera faite à la fin et après ça suit le
- 19:12bouton de processus de validation comme
- 19:13on a vu dans la première partie en tout
- 19:15cas au niveau des formules donc vraiment
- 19:17pas compliqué
- 19:18et ici on va jamais de sens cette
- 19:20fois-ci parce que c'est le maximum et ça
- 19:22a bien validé sans problème donc tout
- 19:24fonctionne comme prévu par rapport aux
- 19:26différentes règles de validation que
- 19:27nous avons effectué voilà qui termine et
- 19:31bien cette deuxième partie sur les
- 19:32formulaires vous avez vu que c'était pas
- 19:33très compliqué ça va rajouter grand
- 19:35chose de nouveau on a passé quand même
- 19:37plus de temps sur la première partie
- 19:38parce que surtout aussi parce que je
- 19:39voulais vous montrer un peu les
- 19:40différents types de champs qu'on pouvait
- 19:41écrire et encore on n'a pas vu la
- 19:43totalité des champs en tout cas des
- 19:45codes possibles avec Django pour écrire
- 19:48des champs de formulaire on avait plein
- 19:49de manières aussi de tourner tourner les
- 19:51choses et personnaliser un petit peu les
- 19:53choses ensuite on a fait une validation
- 19:54propre au modèle avec un modèle et là en
- 19:57cette seconde partie on s'est compté de
- 19:58voir un petit peu contenter de faire un
- 20:00peu la validation des données mais de
- 20:02manière personnalisée si vous voulez
- 20:03l'ajouter encore une fois et pour
- 20:05terminer je rappelle ce n'est pas
- 20:07obligatoire c'est toujours la même chose
- 20:08si vous avez défini ici des règles
- 20:10suffisantes au niveau des modèles
- 20:11éventuellement au niveau de la création
- 20:13des champs du formulaire ça suffira la
- 20:16saisie vraiment le système Jung n'est
- 20:19pas capable en fait de faire des
- 20:20vérifications par exemple ça le
- 20:22validateur par défaut ne peut pas savoir
- 20:24que je veux une quantité entre 1 et 100
- 20:26pour un livre c'est impossible il peut
- 20:27pas le deviner c'est un besoin que je
- 20:29veux en particulier spécifique c'est un
- 20:31besoin arbitraire donc dans ce cas là
- 20:32vous avez forcément besoin d'écrire un
- 20:34validateur personnalisé pour le faire et
- 20:37ainsi de suite pareil ça c'est une règle
- 20:38qui est bien spécifique que Chango ne
- 20:40peut pas effectuer de manière
- 20:41automatique peut pas deviner donc c'est
- 20:43vraiment propre à ce cas si vous n'avez
- 20:45pas de besoin d'effectuer des tests ou
- 20:47d'avoir des des vérifications aussi
- 20:49spécifiques que ça ou que ça et que vous
- 20:51pouvez vous contenter de choses qu'on
- 20:53fait simplement programmation la
- 20:55longueur maximale le fait que ce soit
- 20:56unique le fait que ce soit requis ce
- 20:58genre de choses et bien pas de problème
- 21:00vous pouvez vous contenter de ce que
- 21:01vous avez défini dans les modèles de ce
- 21:02que vous définissez dans les formulaires
- 21:04et passer par une validation classique
- 21:06par défaut comme on l'a fait dans la
- 21:08première partie concernant les
- 21:09formulaires et ça vous avez vu que ça
- 21:11marchait très bien aussi donc ça c'est
- 21:13vraiment un petit plus si vous voulez
- 21:14personnaliser davantage pour des règles
- 21:15bien spécifiques
- 21:17je vous laisse avec cette partie pour la
- 21:20suite mais on va passer à d'autres
- 21:21petites choses on arrive quand même très
- 21:22très rapidement à la fin du coup je vous
- 21:24dis surtout pas mal de choses qu'on
- 21:26pourrait éventuellement aborder dans des
- 21:27tutos si on veut compléter mais au
- 21:29niveau du courant lui-même on a quand
- 21:30même quasiment fait le tour un petit peu
- 21:31de tout ce que je voulais aborder avec
- 21:33vous donc là il vous manquait surtout
- 21:35cette grosse partie ce que les
- 21:36formulaires sont quand même on va dire
- 21:38une partie très importante et un peu
- 21:40essentielle quand même quand on fait des
- 21:41applications notamment des sites web on
- 21:42a du mal quand même à faire sens qu'on
- 21:44est très vite amené à demander des
- 21:45données à l'utilisateur sauf si on
- 21:47produit simplement un site statique on
- 21:49distribue de l'information et sans plus
- 21:50mais là maintenant vous avez vu cette
- 21:53deuxième partie sur les formulaires vous
- 21:54avez via par quelques petits détails
- 21:56mais vous pourriez créer normalement une
- 21:57application un site web assez complet
- 21:59avec quasiment toutes les
- 22:00fonctionnalités qui vous faut même si
- 22:02nous manque une fonctionnalité quand
- 22:03même en particulier qui est importante
- 22:04aussi et qu'on sur laquelle on va
- 22:07s'attarder pour la suite qui est
- 22:08l'authentification tout ce qui est lié
- 22:09justement aux utilisateurs les
- 22:10permissions ça c'est un peu la grosse
- 22:12partie qui nous manque finalement pour
- 22:14avoir quelque chose de complet par
- 22:16rapport à ça je vous dis à bientôt pour
- 22:17la suite on se retrouvera bien pour une
- 22:19prochaine séance pour parler justement
- 22:20des utilisateurs l'authentification des
- 22:22permissions tout ça tout ça à bientôt
- 22:25[Musique]
About this transcript
This page contains the full transcript of Django #12 - formulaires (2/2) by EvoluNoob, generated from the public captions YouTube serves with the video. The transcript has 4,563 words across 675 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to translate the transcript into 100+ languages.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, translation to 100+ languages, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.