- 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 person00:00:00 :Dans cette vidéo, on va voir comment créer un formulaire qui est lié à un modèle.Dans ce cas-ci, j'ai créé une URL article qui redirige vers la vue blog post.
00:00:10 :Et dans cette vue blog post, je retourne un fichier HTML ici,qui contient un formulaire qui pour l'instant n'existe pas.Mais vous voyez que là, on a tout simplement un formulaire avec la méthode post,avec notre formulaire en tant que P.
00:00:22 :C'est-à-dire qu'on va avoir un champ sur chaque ligneet un bouton submit ici créé, qui lui est affiché pour l'instant.Donc ça, c'est le setup que j'ai actuellement.
00:00:31 :Et j'ai comme modèle ici un modèle blog post,qui correspond à un article de blog avec différents champs.Donc là, on est vraiment sur le modèle.
00:00:38 :Donc le modèle qui va nous permettre de représenter des donnéesque l'on va insérer dans notre base de données.Donc là, on a title, slide, publish, etc.
00:00:46 :Et on va vouloir créer un formulaire à partir de ce modèle.Donc ici, dans forms.py, on pourrait créer un formulaire comme on l'a fait ici,
00:00:53 :en héritant de forms.form, et créer nous-mêmes nos champset ensuite les relier à notre modèle.Heureusement, il y a une façon de faire beaucoup plus simple.
00:01:01 :Donc Django a tout prévu.Donc on va créer une classe qui va s'appeler BlogPostForm.Et on va hériter cette fois-ci de forms.ModelForm.Donc bien ModelForm avec un M majuscule et un F majuscule.
00:01:13 :Et ensuite, on va mettre à l'intérieur de cette classe une autre classe,qui est une classe méta, qui va nous permettre de préciser du coupcette classe ici avec quelles données elle doit travailler.
00:01:23 :Donc dans ce cas-ci, on va préciser le modèle que l'on souhaite lier à ce formulaire.Donc on va mettre un attribut modèle.Et cet attribut modèle, il va être égal à BlogPost.
00:01:32 :Donc BlogPost, c'est la classe que j'ai importée depuis Blog.Models.Donc cette classe ici qui représente le modèle d'article dans ma base de données.Donc ça, je vais le mettre ici, après modèle.
00:01:43 :Donc modèle égal à BlogPost.Et on va ajouter à la suite les champs que l'on souhaite afficher.Donc on va avoir un attribut fields.Et dans cet attribut, on va mettre une liste,avec tout simplement le nom des champs qu'on veut afficher.
00:01:56 :Donc le nom de tous ces champs ici.On pourrait mettre, pour nous simplifier la vie,la chaîne de caractère "-all".Donc 2- au début, 2- à la fin et all.
00:02:06 :Et ça, ça nous permettrait d'avoir automatiquementtous les champs ici de notre modèle qui sont intégrés.Si on ne souhaite pas avoir tous les champs,on pourrait par exemple prendre le title et le sluget les spécifier ici à l'intérieur d'une liste.
00:02:17 :Donc dire qu'on veut uniquement le title et le slug.Vous avez de la même façon exclude,qui permet à la place d'inclure des champs,de partir de l'inverse.
00:02:27 :Donc c'est-à-dire qu'on va enlever ça et on va diremets-moi tous les champs sauf le titre par exemple.Ou sauf le titre et le slug.
00:02:34 :Alors c'est pratique si jamais vous savez que vous avezjuste quelques champs que vous ne souhaitez pas intégrer.Plutôt que de mettre une longue liste de champs à intégrer,il est peut-être préférable de mettre uniquement les 2 champsque vous ne souhaitez pas intégrer dans votre formulaire.
00:02:47 :Personnellement, je vous déconseille de faire çacar quelqu'un qui lit votre code,ça va être assez compliqué pour luipuisqu'il voit que vous excluez titre et le slug,mais il ne sait pas du coup quels champs sont inclus.
00:02:58 :Donc il va falloir qu'il aille voir dans blog postquels sont les champs qui sont disponibleset ensuite qu'il se dise ok, donc là il a tout missauf le titre et le slug.
00:03:05 :Donc ça veut dire qu'il reste tout ça.Donc c'est pas très facile.Donc moi personnellement, je préfère mettre le fieldquitte à avoir une liste un peu plus longue.
00:03:13 :Mais au moins ça permet de clairement,quand quelqu'un lit votre code,de voir en fait quels champs vont êtreà l'intérieur de votre formulaire.Donc ici je pourrais prendre plusieurs élémentscomme title, on va prendre la date,on va prendre la descriptionet on va prendre la catégorie.
00:03:27 :Donc on va prendre tout çaet on va le mettre ici à l'intérieur de notre liste.Comme ça.Donc là j'utilise les multicurseurs de PyCharmpour aller un petit peu plus vite.
00:03:37 :Et donc là je dis que je veux avoirle titre, la date, la catégorie et la description.Et donc tout ça, on va pouvoir le mettreet donc l'afficher dans notre vue.
00:03:45 :Donc dans la vue ici,je vais importer depuis website.formsle formulaire que je viens de créer,donc blogPostFormet on va le créer à l'intérieur de notre vue.
00:03:54 :Donc on va dire que form est égal à blogPostFormet on ne va mettre aucune donnée ici.Donc on met juste les parenthèsespour instancier un formulaireà partir de cette classe.
00:04:02 :Et je vais passer cette variable icidans mon contexte.Donc je mets un dictionnaireet je dis que form est égal à form.Donc on a la clé ici, formet la valeur associée.
00:04:11 :Et comme ça, dans notre fichier HTML ici,on va pouvoir utiliser notre variable formet l'afficher.Donc si j'actualise ma page ici,que j'appuie sur entrée,vous voyez que là,on a bien les champs qui correspondentà ce qu'on avait dans notre form.py ici.
00:04:25 :Donc dans notre classe,on a dit qu'on voulait le titre,la date, la catégorie et la description.Et vous remarquez que l'ordrea une importance ici.
00:04:31 :Donc si j'inverse les deux,si je mets la descriptionet la catégorie par la suiteet que j'actualise ici mon site,on a d'abord la descriptionet ensuite la catégorie.
00:04:38 :Donc moi, je préfère le mettredans ce sens ici.Et si on enlève donc cette listeet qu'à la place, on met all,vous allez voir qu'on va avoirdonc tous les champsqui vont être affichés.
00:04:47 :Donc j'actualise et là,on a tous les champs,le titre, le slog, published,on peut aller chercher l'auteur,la catégorie, etc.Et donc là, on se retrouveavec quelque chosequi ressemble pas malà ce qu'on a dans notre interfaced'administration.
00:04:58 :Quand on veut, par exemple,ajouter un article,on a le titre, le slog, published,etc.Donc ça ressemble pas malà ce qu'on a ici.
00:05:04 :Et vous voyez qu'aveccette chaîne de caractère all,ça permet de facilementinclure tous les champs.Généralement,on va vouloir seulementspécifier quelques champs,donc ça peut être pratique icide pouvoir les spécifier.
folder_zip
Télécharger les fichiers
cloud_download
sources_formulaires-lies.zip
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.