- 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
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 :Dans cette partie, on va voir comment traiter les données de ce formulaire.Il contient plusieurs petits formulaires si vous voulez.C'est un seul formulaire, mais il y a plusieurs modèles qui vont devoir être traités.
00:00:10 :Vous allez voir que là encore Django nous simplifie extrêmement la viepuisqu'on va pouvoir faire tout ça avec 3 ou 4 lignes de code.Là, on a différentes options.
00:00:18 :On pourrait faire ce traitement directement dans l'AvuCart.Faire un peu comme on fait quand on a un formulaire généralement,c'est-à-dire vérifier si la requête est de type GET ou de type POST.
00:00:29 :Si c'est de type POST, récupérer les données qui sont envoyées avec le formulairepuisqu'on est en méthode POST, et sauvegarder ce formulaire.Dans ce cas-ci, je vais vous montrer comment le faire dans une autre vue.
00:00:40 :C'est tout à fait possible aussi.C'est peut-être plus efficace de le faire directement dans cette même vuepuisqu'on va pouvoir réutiliser certaines choses.Mais je vais vous montrer une autre façon de fairepour vous montrer qu'il n'y a pas qu'une seule façon de faire les choseset qu'on peut très bien séparer les choses en plusieurs vues.
00:00:55 :Ce que je vais faire, c'est déjà créer une URL, un chemin d'URLpuisqu'on va vouloir faire ça dans une autre vue.Je vais aller dans le shop ici, dans urls.py
00:01:03 :et on va rajouter une URL que je vais mettre après le carteet on va l'appeler tout simplement UpdateQuantities, comme ceci.On va relier ça à une vue qui n'existe pas encore mais qu'on va créer tout de suitequi va s'appeler elle aussi UpdateQuantities.
00:01:16 :Pour le nom aussi, on va mettre UpdateQuantitiesmais on va juste mettre un tiré du milieu au lieu du tiré du bas.Je vais tout de suite faire l'import.
00:01:23 :On va aller faire ça dans le store.views.Je vais le mettre à la fin ici, et on met l'import de cette fonctionqui n'existe donc pas encore.
00:01:32 :On va aller la créer dans views.py, UpdateQuantities,on va récupérer la requête et ici on va faire toute la logiquequi va nous permettre de récupérer les informations du formulaireet de les sauvegarder.
00:01:44 :On va lier notre formulaire à cette vueet pour ça on va préciser le paramètre action iciqui par défaut redirige vers la même page.
00:01:52 :Si on ne soumet rien dans cet attribut action,quand on soumet le formulaire, on va être redirigé vers la même URLque celle sur laquelle on est actuellement,donc le panier ici, slash, cart, slash.
00:02:01 :Je vais donc modifier cette action ici pour dire qu'à la placeje veux rediriger vers la vue qu'on vient créer,donc UpdateQuantities, comme ceci, avec les guillemetssi j'arrive à le retrouver.
00:02:12 :Et on ferme notre accolade.On va rediriger notre formulaire vers cette vueet dans cette vue on va donc récupérer les informations du formulaire.Donc là dans ma vue UpdateQuantities,je vais devoir refaire ces deux lignes de code,c'est pour ça que je vous disais que ce serait peut-être plus efficace
00:02:26 :de le faire directement dans le panier iciet de réutiliser les lignes en fonction du type de requête.Là je vais copier ces lignes iciet ici ça va être sensiblement la même chosesauf qu'on va rajouter les données qui proviennent de la requête.
00:02:38 :Donc on va faire Request.Post comme ceci,donc avec le S, Request.Post,et ensuite on donne toujours ici notre QuerySetpour ne cibler que les articles qui sont associés à l'utilisateur.
00:02:48 :Donc ça, ça va nous retourner en fait un FromSettout comme on l'avait fait ici,sauf que là on avait fait un FromSet à partir des articles,donc c'est ce qui nous permettait d'afficher les bonnes quantités.
00:02:57 :Donc là on a 1 et 1 pour les deux éléments,mais si je vais dans mon interface et que je change le nombre d'élémentspour les sneakers par exemple, que je reviens sur l'interface,j'actualise, donc là je ne veux pas soumettre le formulaire,je veux juste actualiser la page.
00:03:09 :Vous voyez qu'on a bien la quantité qui est affichée de 4.Donc ça fonctionne, sauf que là nous ce qu'on va vouloir fairece n'est pas afficher les données qui sont déjà existantes,mais modifier en fait ces données,et pour ça on va devoir récupérer les données à partir de la requête,
00:03:21 :donc dans le dictionnaire post qui est envoyéquand on va soumettre le formulaire.Et ensuite, qu'est-ce qu'il faut faire ?Eh bien, juste deux lignes de code.
00:03:29 :C'est pour ça que je vous disais à quel point c'est très facile à faire avec Django.La première chose qu'on doit faire, c'est là encore,comme si on avait un seul formulaire, vérifier qu'il est valide.
00:03:36 :Donc on va faire if FromSet.isValid,et s'il est valide, ça veut dire que les données sont valides pour nos modèleset qu'on peut donc sauvegarder ces éléments,et donc on fait FromSet.save.
00:03:47 :Donc là encore, comme je vous le disais,si vraiment vous êtes complètement nouveau avec les formulaires,c'est peut-être un petit peu beaucoup d'informations d'un coup,donc n'hésitez pas à aller voir les formations d'Oxtring sur les formulaires,mais sinon vous voyez que c'est vraiment en fait exactement la même chose
00:03:59 :que si on avait un seul formulaire unique,sauf que là on en a plusieurs, et c'est Django qui va s'assurerde faire le lien entre tous les éléments qu'on a dans notre fichier HTML,donc tout ce qu'on avait vu avec les différents inputset avec les clés primaires qui étaient à l'intérieur de ces inputs cachés,
00:04:12 :et qui va ensuite faire les liens entre tout ça,et pouvoir sauvegarder les informations au bon endroit.Pour finir, on va faire une redirection tout simplement,donc on va rediriger vers la vue cartes,puisqu'on veut rediriger l'utilisateur vers le panierpour qu'il voit en fait son panier mis à jour.
00:04:26 :Donc normalement tout est bon, on va aller tester ça,donc je vais actualiser cette page,là j'ai bien 4 en quantité puisqu'on vient de le modifier sur les sneakers,et donc je vais modifier ça, on va mettre 2 pour le premier article,on va mettre par exemple 7 pour les deuxièmes,
00:04:40 :et on va cliquer sur Mettre à jour les quantités,et là vous voyez que ça a bien été mis à jour,on a toujours 2 et 7, donc on a été redirigé vers cette page,et je vais juste vous prouver, parce que ça allait peut-être un peu vite,je vais revenir sur la page d'accueil, revenir sur le panier,
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.