- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Formations
Articles
Communauté

La certification qualité a été délivrée pour la catégorie d'actions « Actions de formation ».
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 personlive_helpToutes les questions

Gabriel Trouvé
14 mars 2023 - 14 mars 2023 à 11:26
checkConversation résolue
2 réponses
Supprimer le panier (tuto e commerce)
Re,def delete_cart(request): cart = request.user.cart if cart: cart.orders.all().delete() cart.delete() return redirect('index') Ici on va chercher les objets du modèle Order en faisant cart.orders.all(). Car dans cart le champs orders est …
00:00:00 :Maintenant qu'on a donné la possibilité à l'utilisateur d'ajouter des éléments dans son panier,on va devoir lui donner également la possibilité de supprimer son panier au complet.
00:00:10 :On ne va pas pour l'instant faire la gestion des quantités,on va pouvoir par la suite décider d'ajouter, de modifier le nombre d'éléments qu'il y a dans le panier.
00:00:18 :Par exemple, si j'ai ajouté deux fois la même paire de baskets, je vais pouvoir changer cette quantité.Pour l'instant, ce qu'on va faire, c'est juste lui donner la possibilité de supprimer le panier au complet.
00:00:27 :Pour ça, on va là encore créer une nouvelle URL.Dans URL ici, on va dupliquer cette URL et on va faire carte-delete, tout simplement.On va faire une vue que l'on n'a pas encore créée, qu'on va appeler deleteCart,et on va la nommer deleteCart, tout simplement.
00:00:43 :On retourne dans notre fichier de vue, donc views.py, qui est dans l'application Store.On crée une vue deleteCart et on va lui passer le request.
00:00:53 :Ce qu'on va faire ici, on va récupérer le panier de l'utilisateur,et s'il existe, on va supprimer tous les ordres qui sont à l'intérieur,et supprimer également le panier.
00:01:03 :Là, on peut faire ça d'une façon qui est un petit peu nouvelle.J'ai décidé de vous montrer cette façon de faire en créant la formation.
00:01:11 :Je me suis rappelé de ce nouvel opérateur, qui est l'opérateur walrus, comme ceci.Pourquoi walrus ? Parce que walrus, ça signifie morse.Si vous penchez la tête vers la gauche, vous devriez voir que ce symbole ici ressemble à un morse.
00:01:23 :Voilà pour la petite histoire.Là, je vais vous montrer comment on pourrait faire avant.Le symbole walrus est apparu dans la version 3.9 de Python, si je ne me trompe pas, 3.8 ou 3.9.
00:01:34 :Avant, on aurait pu faire quelque chose comme ça,dire par exemple cart égale request.user.cart,et ensuite dire if cart.Si on a un panier, on va faire cart.orders.all.delete.
00:01:50 :Ce qu'on fait ici, c'est qu'on récupère tous les orders qui sont dans notre panier et on les delete.On peut faire un delete comme ça sur plusieurs éléments d'un query set.
00:01:58 :On n'est pas obligé de boucler sur tous ces éléments-là.On peut directement faire .delete sur le query set,même s'il y a plusieurs éléments, ils seront directement tous supprimés.
00:02:06 :Ensuite, ce qu'on fait, c'est cart.delete.Comme ça, on supprime tout ce qu'il y a à l'intérieur du panier,et ensuite, on supprime le panier.Pour finir, je vais juste faire un return vers la vue d'index.
00:02:16 :On va faire redirect vers index tout simplement.Rien de bien compliqué pour la logique.Quand quelqu'un se dirige vers cette vue, on récupère le panier.
00:02:25 :Si le panier existe, on supprime tout ce qu'il y a dedans.On supprime le panier et on redirige vers la page d'accueil.Là, je vais juste vous montrer ce walrus.
00:02:32 :Vous voyez qu'ici, on a deux lignes.On a une première ligne dans laquelle on récupère l'élément,et s'il existe, on fait juste un if cart.
00:02:38 :Ça fait deux lignes qui pourraient être fusionnées en une seule.C'est ce que permet cet opérateur walrus.Ce qu'on va faire, c'est qu'on va tout simplement prendre ça ici.
00:02:47 :J'enlève cette ligne.Plutôt que de mettre un deux points, je vais mettre deux points égales.On n'oublie pas les deux points à la fin,puisque ça, c'est les deux points de la structure conditionnelle.
00:02:58 :Là, ce qu'on dit, c'est tout simplement qu'on fait l'assignation directement sur cette ligne.On vérifie est-ce que cart existe.Et cart, c'est égal à quoi ?
00:03:08 :C'est égal à ça.En même temps qu'on fait cette vérification,qu'on a bien quelque chose dans cart,on va assigner ça dans une variable,ce qui nous permet par la suite d'utiliser cette variable au lieu de tout ça.
00:03:20 :Ça nous permet d'éviter d'avoir à faire ça,puisque là, si on faisait ça,si on vérifiait directement ifrequest.user.cart,là, on serait obligé à chaque fois de faire tout ça,donc ifrequest.user.cart.
00:03:30 :C'est un peu répétitif.Là, on fait cette vérification.On vérifie que ça, ça existe.Et en même temps, on l'assigne dans cette variable.J'espère que c'est suffisamment clair.
00:03:39 :Si vous n'êtes pas encore très à l'aise avec ça,je voulais juste vous le montrer,parce que je trouvais ça intéressant.C'est la première fois que j'ai un cas de figure concretdans lequel je vois que je peux l'utiliser,donc je trouvais ça intéressant de vous montrer ce cas de figure
00:03:51 :pour mettre ça dans la tête des gens,puisque si cet opérateur existe, c'est bien pour quelque chose.Et là, ça nous a permis d'éviter une ligne de code,et si même je trouve un peu plus facile à comprendreune fois qu'on est habitué à cette syntaxe.
00:04:03 :Voilà pour la vue qui permet de supprimer le panier.Et là, on va tout simplement rajouter sur la vue du panier,donc dans cartes.html, après notre boucle for,
00:04:12 :on va faire un petit peu d'espace ici.Après la boucle for, on va juste rajouter une balisepour mettre un lien,et on va mettre dans le lien ici, delete cart,et on va dire, à l'intérieur du lien ici, supprimer le panier.
00:04:24 :Tout simplement.Donc si je reviens sur la vue ici, j'actualise.Alors, je dois avoir une erreur quelque part.Delete cart is not defined.Oui, puisque je ne l'ai pas importé.
00:04:34 :Donc ici, on va importer delete cart,et je vais revenir ici, j'actualise, donc c'est bon.Je vais me connecter, donc je me connecte avec le super user.
00:04:43 :Voilà, donc là, on n'a rien dans notre panier.On va cliquer sur voir l'article, on va l'ajouter dans le panier.On a le bouton qui apparaît, voir le panier.
00:04:52 :J'ai bien les sneakers, donc j'en ai un dans le panier,tout fonctionne, et je clique sur supprimer le panier.Je reviens sur la page d'accueil, et je n'ai plus le lien ici,donc ça veut dire que le panier a bien été supprimé.
00:05:02 :On va juste vérifier que tout a été supprimédans l'interface d'administration.Donc on n'a pas le panier ici, on n'a rien dans orders,et les produits sont restés intouchés.
00:05:11 :Donc voilà, ça fonctionne, on a bien la gestion du panier.Donc avec la gestion des articles,on peut ajouter des articles dans notre panier.Donc ça, c'est le modèle order.
00:05:20 :On peut ensuite afficher ce panier.On peut également rajouter plusieurs articlesqui sont déjà dans le panier, ce qui va augmenter leur quantité.Et on peut également supprimer ce paniersi on souhaite revenir à un panier vide.
00:05:32 :Donc voilà pour les différents éléments.Là encore, bien sûr, ça reste très simple.Donc il y a pas mal de petites choses comme çaqu'on n'a pas encore gérées,mais on a quand même le fonctionnement de baseavec les modèles de base qui nous permettent d'avoirla gestion du panier utilisateur de notre site e-commerce.
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.