- 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 partie, on va voir comment sauvegarder un modèle à partir d'un formulaire.Puisque dans ce cas-ci, on a un formulaire qui est lié à notre bloc post,et donc quand on va récupérer les données du formulaire, on va pouvoir utiliser ces donnéespour automatiquement sauvegarder un bloc post dans notre base de données.
00:00:16 :Donc pour ça, on a dans notre fichier HTML notre formulaire qui est affiché,et quand on va utiliser le bouton submit ici, donc le bouton créer,on va, grâce à une méthode post ici, envoyer des informations dans cette vue,donc la vue bloc post, qui est la vue par défaut qui va être redirigée avec le formulaire ici.
00:00:34 :Donc on pourrait préciser une autre vue en mettant action ici, en mettant une autre URL.Par défaut, on va revenir à cette vue, donc la vue bloc post.
00:00:42 :Donc ici, on va avoir exactement la même chose que dans le sign up,c'est-à-dire qu'on va vérifier si la requête est de type post,donc avec request.method==post, donc ça va être très similaire à ce qu'on a ici.
00:00:53 :Donc là, je vais faire un if, donc if request.method==post.On va récupérer le formulaire en lui passant les données qui sont récupérées dans le dictionnaire request.post,
00:01:04 :et si ce n'est pas le cas, eh bien on fait un formulaire tout simple comme ceci,avec les parenthèses vides, donc une instance vide de ce formulaire.
00:01:11 :Ensuite ici, on va pouvoir vérifier si le formulaire est valide, donc if form.isvalid,et si le formulaire est valide, on va pouvoir afficher form.cleaneddata.Donc ça, ça va nous afficher un dictionnaire avec les données que l'on a rentrées dans notre formulaire ici.
00:01:26 :Donc pour l'instant, je vais juste faire ça, je vais afficher l'onglet run ici,pour qu'on voit ce qui se passe ici dans l'output, et pour qu'on voit notre print.
00:01:33 :Donc je reviens ici, j'actualise, je vais mettre un titre, je sélectionne une date ici,je sélectionne une catégorie, une description, je clique sur créer,et là si on va voir ici, on voit qu'on a bien notre dictionnaire qui est affiché.
00:01:46 :Donc ça, c'est le dictionnaire cleaned data avec le titre,avec la date qui est convertie automatiquement en objetDateTime.Date.Donc ça, c'est parce qu'ici on a l'objet cleaned data, donc c'est des données qui ont été nettoyées,qui ont été converties en données que Python peut comprendre plus facilement.
00:02:02 :Donc plutôt que d'avoir une chaîne de caractère ici, on a un objetDateTime,et pour la catégorie, on a un querySet, donc ici avec les différentes catégories qui ont été sélectionnées.
00:02:10 :Et pour la description, tout simplement une chaîne de caractère.Donc là, vous vous dites, on pourrait récupérer chaque élément comme ça,et créer un blog post, donc faire blogPost.object.create à partir de notre classe blogPost ici,
00:02:22 :donc il faudrait l'importer depuis blog.models.Donc on pourrait très bien faire ça comme ça,on pourrait dire ici title égale à form.cleanedData.getTitle, etc, etc.Donc ça pourrait marcher, mais vous en conviendrez, c'est un peu long,et heureusement on a un moyen de faire beaucoup plus rapidement.
00:02:40 :Pour ça en fait, on va passer directement par notre formulaire.Donc en fait, ce qu'on va faire, c'est form.save, tout simplement,et ça, ça va nous permettre de sauvegarder ce formulaire,et donc le modèle qui lui est associé, dans notre base de données.
00:02:53 :Là, par défaut, vous avez un paramètre qui est commit, qui est égal à true par défaut,mais vous pouvez le passer à false.Donc ça, ça peut être pratique, puisque si je mets le formulaire par défaut comme ça,automatiquement votre objet va être sauvegardé dans la base de données.
00:03:06 :Mais peut-être que vous avez envie de faire des modifications avant de le sauvegarder.Par exemple ici, on n'a pas mis le champ Published,donc ici on ne peut pas choisir si on souhaite publier ou non notre article.
00:03:15 :Et peut-être qu'ici vous souhaitez automatiquement forcer l'article à être publié.Donc dans ce cas-ci, on peut mettre commit égal false.Donc comme ça, ça veut dire qu'en fait, notre modèle va être créé à partir du formulaire,mais il ne va pas être sauvegardé dans la base de données.
00:03:28 :Donc ce que je vais faire, c'est que je vais récupérer tout ça dans une variable,puisque quand on met commit égal false ici,on peut récupérer notre objet dans une variable.
00:03:36 :Donc notre objet qui sera en fait un objet de type bloc post.Donc je vais vous montrer tout ça tout de suite.Je vais faire un print de type de bloc post et un print de bloc post tout simplement.
00:03:45 :Et on va relancer donc ici notre formulaire.Donc on va attendre que le serveur se relance, voilà.Et on va ensuite cliquer sur créer pour relancer la création ici d'un objet.
00:03:56 :Donc là dans ce cas-ci, le formulaire est toujours valide.On crée notre objet donc bloc post.Et là vous voyez qu'on a bien un objet de type blog.models.blocpost.
00:04:04 :Donc c'est bien une instance de ma classe bloc post ici, donc de mon modèle.Et on a un article qui est affiché.Donc il s'agit bien de l'article que l'on vient d'envoyer.
00:04:12 :Et donc là ça nous permettrait comme je vous disais par exemple de direbloc post.published égale true et ensuite bloc post.save tout simplement.Donc là on appelle la méthode save directement sur notre modèle.
00:04:22 :Et là ça va être sauvegardé dans la base de données.Donc là pour vous montrer, je vais aller dans l'admin de mon site.Pour l'instant donc dans les articles, on a cinq articles, donc ces articles ici.
00:04:31 :Et si je reviens donc sur mon site ici, si je clique sur créer,donc là vous n'avez rien vu et c'est normal puisqu'on n'a mis aucun print, rien.
00:04:39 :Mais on a bien notre post qui a été effectué avec un résultat de 200 ici.Donc ça veut dire que la requête a été correctement effectuée.
00:04:45 :Et si je viens dans mon administration que j'actualise,là j'ai bien un article qui a été ajouté.Donc un article avec le titre un article.
00:04:52 :Et le published est bien à true.Donc vous voyez que le published ici a bien fonctionné.Donc ça c'est une façon de faire.Vous pouvez mettre le commit à false, modifier des choses et ensuitesauvegarder directement votre modèle sur l'instance du modèle.
00:05:03 :Sinon on peut donc enlever le commit false puisque par défaut il est à true.Et si je mets juste form.save ici, que je reviens pour créer un nouvel article.
00:05:12 :Donc je vais actualiser ma page ici.Et là je vais mettre un autre article.On va mettre une date comme ça.Pitons, test, créer.Donc là ça fonctionne.
00:05:23 :Et si maintenant je reviens dans mon interface d'administration que je reload la page,là vous voyez que cette fois-ci on a bien un autre article qui cette fois-ci par défaut n'estpas publié puisque là on a juste fait un form.save.
00:05:33 :Et quand on va voir dans notre modèle, si on regarde le published,la valeur par défaut est à false.Et comme dans notre fichier html ici on n'a pas permis à l'utilisateur de modifier ce champpuisqu'il n'est pas à l'intérieur de notre formulaire,et bien par défaut l'article ne sera pas publié.
00:05:48 :Donc on pourrait ici rajouter published et permettre ainsi à l'utilisateur de modifier cette valeur.Donc là je relance mon url, je vais mettre encore un autre article.
00:05:58 :Et là on va avoir la possibilité de publier,donc de changer la valeur de ce champ dans ma base de données directement depuis notre formulaire.
00:06:06 :Donc là je remets des valeurs par défaut, je clique sur créer et si je reviens voir dans moninterface d'administration, cette fois-ci j'ai bien un article qui est publié automatiquement.
00:06:14 :Donc j'espère que ça vous permet de commencer à avoir vraiment l'intérêt de passer par desformulaires qui sont liés à des modèles, ça nous évite beaucoup de travail.
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.