- 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 :Pour permettre à un utilisateur d'ajouter un article dans le panier, il va déjà falloir rajouter un bouton sur la page de détails.Je vais décider de le faire sur la vue de détails.
00:00:14 :Je vais cliquer sur « voir l'article » et ici on va rajouter un bouton « ajouter dans le panier ».Ce bouton va rediriger vers une vue dans laquelle on va faire toute la logique qui va nous permettre d'ajouter un élément dans le panier.
00:00:34 :Ça va être « string slug » et on va faire une URL « add to cart » qui va rediriger vers une vue qu'on va créer qui va s'appeler elle aussi « add to cart »et le nom ça va être « add to cart ». Là encore trois fois la même chose.
00:00:58 :J'ouvre « views.py » ici. Je crée ma vue « add to cart ». Je fais pour l'instant juste un pass.Comme ça elle est créée et je vais pouvoir l'importer dans mon fichier d'URL. Dans « store.views » on importe ici « add to cart ».
00:02:22 :On va afficher cette partie uniquement si l'utilisateur est authentifié sur notre site. Et on n'oublie pas de fermer avec le « end if ».On a tout ce qu'il faut. Je reviens sur la page, j'actualise et normalement je devrais bien voir. Je ne le vois pas puisque je ne suis pas connecté.
00:02:49 :Je vais enlever l'article, on va juste dire « ajouter dans le panier ». Voilà, comme ceci.Donc ça fonctionne. Maintenant il ne reste plus « qu'à faire la vue » mais c'est là que toute la logique va se passer.
00:03:23 :C'est-à-dire qu'il faudra récupérer l'article qui est dans son panier et incrémenter de 1 la quantité de cet article.Donc ce qu'on va faire c'est récupérer notre utilisateur. On y a accès avec « request.user ». Je vais le mettre dans une variable que je vais appeler « user ».
00:03:56 :On va récupérer ce slug et on va faire un « get object or 404 » pour récupérer le produit en question.Puisque si on essaye d'ajouter pour une raison ou une autre un produit qui n'existe pas, donc ça c'est possible par exemple si on modifiait le HTML ici,si on essayait d'accéder à l'URL directement, eh bien on pourrait arriver potentiellement sur une page d'un produit qui n'existe pas.
00:04:18 :Donc on va déjà réessayer de récupérer le produit en lui passant le slug. Donc « slug » égale « slug ».Si le produit existe, eh bien on va le récupérer dans cette variable. Sinon on aura une erreur 404 qui sera levée.
00:04:46 :Plutôt que de récupérer un objet comme on pourrait le faire avec All ou comme nous on l'avait vu avec Filter pour filtrer les éléments qu'on veut récupérer,dans ce cas-ci on pourrait utiliser Get pour récupérer un élément précis en lui passant l'utilisateur.
00:04:58 :Alors je vais juste importer la classe en faisant option entrée avant pour ne plus avoir ce petit problème.Donc là j'ai juste rapidement importé cette classe au-dessus. Donc avec le Get, on fait juste récupérer le panier qui est associé à l'utilisateur.
00:05:12 :Le problème c'est que Get va nous retourner une erreur si jamais le panier n'existe pas.Donc ce qu'on pourrait faire c'est essayer de récupérer. Il y a plusieurs façons de faire, on pourrait faire un Try Except, on pourrait faire un Filter,
00:05:37 :Donc s'il n'existe pas il sera créé et on va lui passer l'utilisateur ici pour associer le panier à l'utilisateur.Et donc tout ça on va le récupérer dans une variable qu'on va appeler cart et on va devoir lui passer un deuxième élément puisque en fait cette méthode Get or Create
00:06:07 :donc le Order qu'on va créer par la suite puisque si l'élément existe déjà dans la base de données on veut juste incrimenter sa quantité comme je vous avaisdit au début de cette vidéo et s'il n'existe pas et bien on veut l'ajouter à notre panier. Donc là on va devoir utiliser cette deuxième variable. Dans ce cas-ci
00:06:44 :qui va lire mon code que cette variable potentiellement je l'utilise ailleurs alors que quand je mets voilà comme ça un tiré du bas ça indique clairement à quelqu'unqui lit mon code que cette variable je ne vais pas l'utiliser. Je suis quand même obligé de la mettre puisque si je ne mets qu'un élément ici je vais avoir un problème
00:07:43 :Donc il faut bien faire la distinction entre les deux et cet order et bien on va devoir le récupérer et comme je vous disais s'il existe incrémenter sa quantités'il n'existe pas et bien tout simplement l'ajouter dans notre panier. Donc on va faire à peu près la même chose sauf que cette fois-ci je vais créer une variable
00:09:31 :Si l'élément par contre existait déjà donc ça veut dire que created va être égal à false puisque on ne l'aura pas créé on l'aura seulement récupérédonc on aura fait un get. Donc s'il n'existe pas et bien on va tout simplement incrémenter sa quantité. Donc order.quantity plus égale 1 et order.save
00:10:19 :Donc ensuite qu'est ce qu'on va faire et bien on va tout simplement faire une redirection vers la page du produit.Donc on va faire un return et on va rediriger avec redirect donc qu'on va importer puisqu'elle n'est pas importée dans ce fichier.
00:10:30 :Donc option entrée je l'importe et ici on va utiliser un reverse. On va lui dire qu'on souhaite récupérer l'url de product.Donc product comme ceci là encore reverse n'est pas importé donc on va l'importer. Option entrée import Django url reverse.
00:11:04 :Le slug qu'on avait récupéré ici dans notre fonction qui est passé donc avec l'url.Donc ça fait beaucoup de choses d'un coup on va repasser là dessus pour être sûr que vous comprenez bien.
00:11:13 :Donc ici on récupère seulement l'utilisateur on fait juste une association de la variable pour éviter d'avoir à taper request.user à chaque fois.Ensuite on récupère le produit s'il existe donc get object or 404.
00:11:26 :On lui passe le slug on récupère ça dans le produit donc dans la variable produit ici.Si à ce stade ci le produit n'existe pas on a une erreur 404 et on ne va pas plus loin.
00:11:35 :Si le produit existe donc on récupère le panier de l'utilisateur avec get or create.Si le panier n'existe pas il est créé s'il existait déjà on le récupère dans cette variable.
00:11:57 :Si le produit est créé donc ça veut dire qu'il n'existait pas au préalable on l'ajoute dans le panier et on sauvegarde le panier.Si l'objet n'a pas été créé ça veut dire qu'il existait déjà dans notre panier donc on incrémente sa quantité de 1 on le sauvegarde et c'est tout et on redirige vers la page du produit.
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.