Session du 27 mars 2025 à 21h00
Développement Web & Frameworks
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Session de mentorat Django rest framework
Nous continuons avec DRF et les serializers.
00:00:00 :Bonsoir tout le monde, ceux que j'ai vu tout le monde, normalement c'est bon.Comme je disais, ce soir, ça va être Django et Django Rest Framework,mais on va commencer par du Django pur.
00:00:15 :Et notamment pour ceux qui débutent, je ne sais pas s'il y en a beaucoup,du coup, avec Django, on va regarder un peu juste les relations inverses.
00:00:24 :Et après, on va s'amuser un peu. Je ne sais pas s'il y aura ceux qui sont arrivés.Est-ce qu'il y en a qui connaissent Django Extension ?
00:00:32 :Non.Est-ce que c'est quelque chose qu'on trouve, on peut avoir des diagnostics dans la page web ?Est-ce que c'est ça ?Ah, tu parles de la debug toolbar, non ?
00:00:45 :Ah oui, alors c'est autre chose, d'accord.Oui.Oui, j'ai utilisé ça à une certaine époque, mais je ne sais plus le nom, donc voilà.Je crois que c'est Django Debug Toolbar, j'ai plus le nom en tête.
00:00:57 :Ça, et après un petit réaliseur.On va rester un peu large.Mon écran, il est où ?Ça va, vous voyez bien, là ?Nickel.
00:01:16 :Ok.Vous vous souvenez de notre application ?Je ne vais pas partir là-dessus, mais elle est pas mal pour donner l'exemple.Notre application de Toodoo, là, où on avait des Toodoo avec des tâches à faire.
00:01:32 :Comment ça ?C'était pour Sarah Bidier.Oh là.Attends, c'est bon.Donc, je disais, ça va pour tout le monde, ça, l'application de Toodoo ?
00:01:46 :Oui.Ok.Du coup.D'accord.Tu veux parler, Baptiste ?Allô ?Bizarre.Dispute, tu m'entends, Baptiste ?Je vais le mettre dans le chat.Hop.
00:02:04 :Ok.Donc, voilà.Donc, je disais, ce que je voulais montrer avant, c'est que dans le modèle, là,parce que je vais m'en servir à ce que je vais montrer pour le DRF.
00:02:19 :Donc, on a un modèle ToodooItem, et on a des ToodooItemComment.Et les commentaires, entre guillemets, vont appartenir à un ToodooItem.Vous m'arrêtez dès que ça apparaît.
00:02:31 :Donc.Ok.Pas de soucis, Baptiste.Donc, on va partir sur du Django pur.Sur les relations inverses.Donc, on va récupérer, par exemple, un ToodooItem.
00:02:48 :Donc, from Toodoo.models.import.ToodooItem et ToodooItem.C'est marrant de se faire une faute dans le terminal comme ça.Voilà.Et donc, on va récupérer, par exemple, le premier Toodoo.
00:03:05 :Donc, ça va être ToodooItem.object.get.Et là, on va récupérer le premier, on s'embête pas.Voilà.Donc, là, on a récupéré le Toodoo.Et donc, on va maintenant récupérer, donc on a plus la manière de le faire,récupérer tous les commentaires qui sont associés à ce ToodooItem, en fait.
00:03:31 :Donc, là, on va l'appeler comments.Et on peut faire ToodooItem.comments.object.filter.Et là, on va récupérer, donc, Toodoo.attribut.toodoo.item.Et c'est égal à Toodoo.Je peux faire une faute ?
00:03:53 :Non, normalement.OK.Est-ce que jusque-là, c'est bon pour vous ?Là, on a récupéré tous les commentaires qui sont associés à notre ToodooItem, le premier Toodoo.
00:04:02 :Pour vous, ça va ou pas ?Oui.OK.Oui, ça va.OK.Une autre manière de faire.Donc, on a récupéré notre Toodoo.Là, on est passé par, du coup, ToodooItem.comments.
00:04:15 :On a fait un filtre.On pourrait partir directement de Toodoo.Donc, on pourrait faire Toodoo.Donc, là, ça va être .toodooitem.comments.set.Est-ce que j'ai fait une faute ?
00:04:36 :Est-ce que je l'ai, là ?Voilà, c'est bon.Ça, tout le monde le connaissait.Est-ce que tu l'as ou pas ?Non.OK.Donc, là, ici, dans ToodooItem.comments, j'ai ma clé étrangère qui est un Toodoo.
00:04:49 :OK.Qui est un ToodooItem.Donc, ce qui se passe, en fait, c'est que j'ai appelé mon Toodoo et j'ai utilisé la relation inverse.Donc, ce que vous faites, c'est que vous utilisez votre instance de Toodoo et vous vous appelez.
00:05:03 :Ici, vous utilisez ToodooItem.comments.En minuscule.Underscore set.all.En fait, comme ça, vous allez pouvoir récupérer tous les commentaires.Alors, j'avoue que ça part un peu bizarre et ça part un peu compliqué.
00:05:18 :Mais, pour l'instant, ça va ou pas ?Yep.OK.Il y a plus simple.Il y a plus simple.On va faire autrement.Et il y a même plus simple pour...
00:05:30 :Pour importer tous nos monomodèles.Alors, avant de passer à la suite, je vais déjà...Je vais déjà faire ça.J'espère que je ne vais pas péter ma table parce que j'ai fait des tests.
00:05:43 :Alors, ici, on va passer à RelatTimeNameVis.On va appeler comments.Donc, on va faire...Migration.Et, bien sûr, on va l'appliquer.Oui, c'est parce que ma table avait déjà pris la migration.
00:06:09 :J'ai fait des tests avant.Du coup, ici, on a ce qu'on appelle un RelatTimeName.On a appelé comments.Et vous allez voir que c'est beaucoup plus simple que de faire un toodoo.comments.
00:06:22 :Déjà, pour commencer, je ne sais pas si vous connaissez...Je vais l'agrandir.Donc, là, à l'instant, je suis passé par le shell Django.Ça, pour vous, ça va ?
00:06:36 :Oui, OK.OK.Mais est-ce que vous connaissez le shell...Plus ?Mais est-ce que vous connaissez le shell...Plus ?Ici, en fait, j'importe tout ce qu'il faut déjà de base.
00:06:55 :Je n'ai pas à taper mes imports. Ils sont déjà tous importés.Est-ce que ça, vous connaissez ou pas ?Non.Non, du tout.OK.Et c'est là qu'arrive...
00:07:07 :Je dirais que je fais de la pub. Django Extensions.Et ça, en fait, Django Extensions, c'est très sympa.Je ne sais pas.Tu as dit quoi ?
00:07:19 :Tu l'as déjà testé ?Je ne sais pas si on a entendu.Je pense qu'il y en a un.Ah, OK.Du coup, vous avez la librairie Django Extensions qui est vachement pratique.
00:07:33 :Et en fait, qui vous permet justement de faire ça.Après, c'est comme d'hab. Il vous explique comment l'installer, ainsi de suite.Les configurations dans les settings.
00:07:41 :Il n'y a que ça à mettre, en gros, pour utiliser basiquement.Mais après, il y a moyen de customiser un petit peu et faire plus de choses avec.
00:07:49 :Donc, voilà. Il y a plein de choses pour l'échelle, échelle plus, ainsi de suite.Il y a une chose que j'aime bien. Je ne vous le montre pas ça, je t'en fous dessus.
00:07:57 :Il y a ce qu'on appelle les graphes modèles.Donc, il faut installer en plus, par exemple, PyGraphics.Et je vais vous montrer tout de suite comment ça marche.
00:08:06 :Donc, avant de revenir sur ce que je faisais, parce que ça, c'est vraiment cool à voir.Je vais sortir de là. On va le rappeler après.
00:08:15 :La commande, je ne l'ai pas par cœur. Je ne sais plus où elle est.Elle est là, voilà. Je vais prendre un truc de base.
00:08:21 :Donc, en fait, là, avec Django Extensions, en plus, ce que vous pouvez faire, c'est un petit aparté.Je vais vous montrer. Hop.Je vais lancer une commande. Et maintenant, j'ai tous mes modèles et les relations.
00:08:41 :Oh, c'est trop bien. Merci. C'est génial.Oh, c'est super. Mais c'est excellent.Donc, il y a toutes les tables de base qui viennent avec Django et tout ce qui est built-in.
00:08:54 :Là, par exemple, j'ai les utilisateurs, l'abstract user de base.Et après, moi, j'ai là, par exemple, mes to-do items.Et quand on regarde, ici, je galère.
00:09:08 :Par exemple, ici, j'avais montré une fois, j'ai mon singleton qui me permet de gérer mes settings.Mon singleton, il est là, en fait.On sait qu'il y a de l'abstraction parce que c'est écrit ici. Il y a de l'abstraction.
00:09:23 :Là, j'ai la relation, ici, qui est cliquée.Franchement, c'est assez balèze.Oui, très bien.C'était un petit aparté, mais j'ai envie de vous le montrer. Je trouve que c'est cool.
00:09:35 :Gabriel ?Oui ?En parlant des graphes, des bases de données en Django, j'avais des problèmes l'autre fois.Des erreurs, je ne sais pas si c'était dû à quoi exactement.
00:09:50 :Je n'ai jamais pu générer une image des graphes.Avec quelle extension, du coup ?Avec celle que tu présentes sur ton tuto YouTube.C'était celui-là, du coup ? C'était le même ?
00:10:08 :Alors, oui, tu as eu un problème pour générer le graphe ?Oui.Est-ce que ton problème...Donc, bien sûr, il faut que tu installes Django Extension.
00:10:19 :Mais est-ce que ton problème, c'est pas...Quand tu vas ici, est-ce que tu avais bien installé ça, en plus ?Oui, je l'avais installé.Il faudrait voir ce que tu as comme problème.
00:10:34 :Moi, j'ai galéré aussi, mais c'était sur Mac.Et sur Mac, j'ai galéré à l'installer, pas les graphiques, mais vraiment.Mais sur Linux, moi, ça s'est passé tout seul.
00:10:42 :Et sur Windows, à l'époque, je crois que vous avez réussi sans problème.Mais pour ceux qui ont Linux, c'est à l'aise.Tout se fait tout seul, limite.
00:10:52 :T'as pas de problème, là, en fait ?Tu te souviens plus de ce que t'avais comme problème ?Non, du reste, ça va.Sinon, je partagerais le problème juste après.
00:11:04 :OK.Donc, voilà.Surtout, faites pas voir, parce que moi, tout à l'heure, je me suis encore fait avoir.J'ai installé avant de faire la session pour ne pas avoir installé dans vous, entre guillemets.
00:11:13 :Et à chaque fois que je fais mes commandes, j'oublie toujours d'installer ça.Chaque fois, je crois que j'ai un bug.Donc, toujours installer les deux.
00:11:21 :Voilà.Donc, j'en étais où ? Je ne sais plus.Donc, c'était un petit écart, quand même.Donc, on revient là.Tout à l'heure, on avait notre...
00:11:32 :Donc, on passait, en fait...Hop.J'ai relancé ma commande.Donc, le shell.Donc, là, comme ça, je n'ai pas mes imports à faire.Voilà.Et donc, tout à l'heure, on n'avait pas le relatedNames.
00:11:45 :Donc, quand on récupérait les commentaires,on récupérait notre instance de todo.On faisait todo.todoItemCommand.Underscore 7.All.Et en fait, là, c'est beaucoup plus simple.Donc, on va récupérer notre todo, comme on l'a fait tout à l'heure.
00:12:01 :Hop.Object.get.Et on va faire le même que tout à l'heure, celui-là.Et en fait, quand vous avez un relatedName comme ça,c'est plus explicite.
00:12:14 :Vous faites todo.commands.All.Voilà.OK ?Au lieu d'avoir votre todoItemOnSet,vous avez votre relation inverse.Et donc, ça vous crée un attributau niveau de votre classe.
00:12:31 :Ici, vous avez un attribut commands, du coup.C'est bon pour vous, ou pas ?Oui ?OK.On va passer à la suite.Parce que c'est important que vous le montrent,parce que pour les Serializers, on va utiliser du coup ce command qui est ici.
00:12:45 :Et mon Serializer, il est où ?Il est là.Hop.Donc, pour en revenir au Serializer,la dernière fois, on avait quoi ?On avait un Serializer, que je me souvienne,pour tous vos items, pour les afficher,et pour les créer.
00:13:08 :Je ne sais pas si c'est bon pour vous.Vous vous souvenez un petit peu du truc ?Ou je vous fais un petit rappel ?
00:13:16 :Un petit rappel, ça fera du bien.OK.Donc, voilà.Donc, en fait, quand je...Donc, ma vue, elle était où ?Je ne sais pas si vous vous souvenez,ça permettait d'avoir toutes les opérations CRUD disponiblesen très peu de lignes de code.
00:13:36 :Donc, là, ici, j'ai tous mes CRUD.J'ai mes GET, mes PUT, mes PATCH.Et quand je fais un post, une création,ici, je veux que ça utilise...
00:13:45 :Donc, par défaut, ça va utiliser le TodoItemSerializer.Mais quand on est dans une post,on va utiliser le TodoItemCreateSerializer.OK ?Mes deux Serializers qui sont là.
00:13:55 :Donc, quand je suis dans l'application, là,quand je fais un GET sur mes tâches Todo,j'ai bien le titre, la description,COMPLETED, CREATED AT, CREATED AT.
00:14:07 :C'est parce qu'ici, j'utilise tous les champs.Voilà.Il y a un bruit qui est parasite.Je ne sais pas si vous savez.Je n'ai pas fait gaffe.
00:14:19 :Du coup, j'irai, donc, au niveau des modèles, là.On affiche, du coup, ici, TodoItem,tous les attributs en mettant ALL.Alors qu'on aurait pu faire un FILS et mettre ce que l'on voulait.
00:14:35 :Donc, ce qui fait qu'on affiche, ici, tous les attributs.Et quand on va créer, par contre...Je vais y aller, là.Quand on va créer, ici, un TodoItem,on n'a que les champs Title et Description.
00:14:51 :OK ?Et donc, on n'a que ces champs-là.Et donc, j'avais une méthode de validation, ici, d'un champ.Donc, le champ Title, ici.On n'a pas le droit de mettre Patrick dans le champ Title.
00:15:03 :OK ?Donc, si je faisais, genre, ça.Une description.Peu importe, on s'en fiche.Normalement, je ne sais plus où je l'avais fait.Voilà.J'avais une erreur qui était élevée.
00:15:13 :On ne touche pas à Patrick.Parce que, ici, sur mon champ Title, ici,j'avais défini une méthode.C'est un peu comme avec les formulaires Django,les Clean Underscore et le nom de l'attribut.
00:15:25 :Donc, là, c'est Validate Underscore et le nom de l'attribut.Du coup, le nom de l'attribut, ici, Title.Et donc, on avait, du coup, une validation erreur de Serializerlorsqu'on avait le mot Patrick dans le titre.
00:15:40 :Voilà.Est-ce que c'est bon pour vous ou pas ?Oui.Merci pour le rappel.Pas de souci.J'ai cru voir une...Super.Merci pour les petits pouces.
00:15:55 :Il n'y a rien dans le chat ?Je ne regardais pas en même temps.OK.C'était pas de site.Alors, maintenant, on va pousser un peu le truc.
00:16:04 :Sur quoi je vais partir, du coup ?On va créer...Est-ce que je vais...Je vais...Voilà.On va être plus explicite.Ici, je vais mettre mes champs.
00:16:16 :Je préfère.Comme ça, on aura plus de contrôle.On avait, du coup, dans le ToDoItem,on va reprendre les champs qu'on a dans le modèle,mais on va les mettre de manière explicite.
00:16:25 :Donc, on avait...On va mettre le PK, d'ailleurs, avec.Voilà.Merci.Un petit peu de description.Alors, vas-y.Description.Et après, il n'y avait pas les comptes...
00:16:40 :Le boulet A.Et après, c'était...Les dates.Oui, c'est ça.Ouais.Et...J'ai fait une connerie.Voilà.On va le tester tout de suite,parce que ça vit le trait d'avoir un deuil.
00:16:58 :Donc là, si il revient sur mes...Hop là.OK.Ça file bien.Donc, là, comme ça, on est explicite.Alors, je vais vous montrer un truc.
00:17:09 :Maintenant, ce qu'il est possible de faire, en fait,c'est qu'on voudrait afficher,donc, pour chaque item ici,tous les commentaires qui sont associés.Si vous vous souvenez bien,tout à l'heure, on avait créé...
00:17:27 :On avait créé, du coup, ici,une relation inverse avec comments.Donc, ici, par exemple,on va le mettre à la fin.Il est possible de le...
00:17:38 :Excusez.Mince.Hop là.Je vais prendre mon raccourci.Et normalement, si je n'ai pas fait de conneries...Voilà.Et ici, en fait,j'ai tous les commentaires qui correspondentet sous la forme d'un PK.
00:17:52 :OK ?Ils sont là.Alors, pour des fois,ça dépend avec qui ou...Enfin, vu que moi,quand j'ai bossé avec une boîte,je ne faisais que du back-end.
00:18:03 :Elle me disait ce qu'elle voulait.Par exemple, si elle voulait que des PK,moi, j'en ai que des PK,comme ça, que des clés primaires.
00:18:08 :Mais il est possible, en fait,après, d'appeler...Enfin, d'utiliser, en fait, carrément...Enfin, d'avoir un niveau en plus.Parce que là, on n'a que les PK,mais on peut avoir un niveau de profondeur en plus.
00:18:23 :Alors, pourquoi j'utilise ces mots-là, du coup ?Parce que quand vous êtes...Ici.Hop.Voilà.On peut préciser ça, OK ?Donc là, vous voyez, j'ai les PK.
00:18:38 :Normalement, si je n'ai pas fait de conneries...Voilà.Excellent.OK ?Alors.Donc ça, c'est bien, le problème.En fait, vous avez...Ah, il y a quelqu'un qui arrive.
00:18:48 :Sylla.Est-ce qu'il a réussi à rejoindre Sylla ?Je ne le vois pas dans le texte.Sylla.Salut, Sylla.C'est bon.Salut, salut.Salut, tout le monde.
00:19:05 :Salut, salut.Sylla,pour résumer rapidement en 30 secondes,après, il y aura la rediffusion,on a parlé juste avant de relations inverseset de Django Extensions.
00:19:16 :D'accord.Pour utiliser ce qui s'appelle le shell plus,en fait, qui permet d'avoir le shell de Django,mais en version améliorée.Et on a généré un graph de nos modèleset on l'a sorti en image, en PNG.
00:19:34 :D'accord.Et après, on a parlé des Relative Namespour faire des relations inverses.Et là, on est revenu sur les Serializers.Donc, je disais, grâce à...
00:19:48 :Ici, à notre profondeur,donc, du coup,on a tous nos attributs,mais le problème,c'est qu'on n'a aucun contrôle, en fait,sur ce qu'on affiche.
00:19:57 :Et je vais vous montrer,il y a un truc qui est assez cool à faireavec Django REST Frameworkque j'ai utilisé il n'y a pas très longtemps.
00:20:08 :Donc,ça, on va le commenter,on ne va pas le garder.Hop.Et on va se créer un Serializer, du coup,pour todo item comment,on va l'appeler comme ça,Serializer.
00:20:24 :Voilà.Et c'est pareil,on va utiliser un modèle Serializerparce que c'est tellement plus simple.Et un jour,on fera sur les Serializerssans modèle Serializer.
00:20:34 :Mais c'est juste que les modèles Serializers,ce que j'aime bien,c'est qu'ils vont prendre en compteles contraintes que l'on metdans nos modèles.C'est ça qui est pratique.
00:20:44 :Ah oui.Et puis, on a les méthodes,toutes les méthodes de création d'instancequi sont déjà implémentées.On n'a pas à les redéfinir.On peut les se recharger,mais là, quand on crée,on peut créer facilement.
00:20:57 :Là, quand j'ai fait une poste tout à l'heure,par la vue de poste que j'ai dans mon CRUD,j'utilise mon Serializer,mais je n'ai pas de méthode supplémentaired'implémenter.
00:21:10 :Donc, le modèle Serializer,vous avez une couche d'attractionqui est assez balèze.Excusez-moi.Du coup, j'en étais sur monToDoItemCommandSerializer.C'est toujours pareil.On utilise une classe méta.
00:21:23 :Avec quel modèle on travaille ?C'est le ToDoItemCommand.Je ne sais pas, en champ,par exemple, on va direqu'on veut afficher...On va aller voir ce qu'on a.
00:21:35 :On va prendre le commentaireet quand est-ce qu'il a été créé.Donc là, on va direcomment et...Voilà.Ce que j'aime bien avec DRF,c'est qu'ici,on pourrait dire comment.
00:22:06 :Donc là, quand on va redéfinirl'attribut, il va savoir qu'on faitréférence à comment ici.C'est ça qui est balèze.Donc, on va utiliser notreToDoItemCommandSerializer.
00:22:17 :Et là, je pense que je vais générerun bug et je vais vous montrer.Je le fais à l'exprès.Voilà.Donc là, j'ai un bug.
00:22:28 :En fait, ce qui se passe,c'est qu'ici, j'essaye d'afficherune liste.Avec mon ToDoItemCommandSerializer.Le problème...Donc le problème, c'est qu'il fautbien préciser ici.
00:22:43 :Alors, il est où mon...Hop là, je suis là.Il faut lui passer, en fait,many égale through.Parce qu'en fait, on va retournerune liste de plusieurs objets.
00:22:54 :Donc, quand on a besoin de retournerune liste de plusieurs objets,ici, il faut bien passermany égale through.Et maintenant, si je relanceet que je recharge la page,ça passe.
00:23:06 :Et donc, vous voyez, maintenant,j'ai le contrôle total parce quej'affiche que les champs que je voulais.D'accord.OK ?Ça va trop vite ou ça va ?
00:23:18 :C'est captivant.Non, ça va.Merci, merci.Donc voilà, j'ai...Voilà, je voulais parler de ça.Il y a aussi...Alors là, j'ai...Il est où ?
00:23:34 :Tac.Je me trompe dans mon code.Donc, j'ai mon serializer icique j'ai réutilisé ici.Après, je sais que...Je peux réutiliser le stringet la taille de fil, mais...
00:23:48 :Ça n'a pas trop intérêt pour l'instant.Je vais vous le montrer.On va passer sur autre chose.On va continuer sur le serializer.Donc, du coup,il y a d'autres méthodes qui sont pratiquesavec les serializers.
00:24:02 :Pour la...Serialisation.Pour la serialisation,en fait, il y a une méthode.Je vais vous la montrer.On n'est pas dans le create.On est ici.
00:24:16 :Je vais la mettre en dessous, là.Hop.Ça va êtredef to...Representation.OK, c'est celle-là.Donc,ici, il appelle mon super direct.OK, il n'y a pas de problème.
00:24:28 :Je vais le faire autrement.Je vais l'appelerto do.Rep.Tac.Et, basiquement,je vais retourner.Petite coquille de frappe.Ouais, voilà.Merci.Hop là.
00:24:42 :Donc,ça, en fait,cette méthode-là,elle va gérer la sérialisation.Et ce que vous pouvez faire,je vais vous le montrer de toute façon,c'est que, par exemple,je vais faire...
00:24:57 :Toujours appeler super avant,comme ça, on récupère, en fait,ce que notre méthode fait à la base.Et je ne sais pas,si vous voudrez la faire, en fait, comme ça,ouais, ça pourrait être pas mal.
00:25:09 :Comment.Member.Alors, je ne dis pasque ce que je vais faire là,je ne dis pas que c'est bien,mais c'est juste pour montrer que c'est possiblede faire ce genre de choses.
00:25:19 :On pourrait faire...Donc, on a bien notre instance, ici.Donc,instance.comments.Donc, c'est tous les commentairesde notre to-do item..all..num.count.Je vais les compter.
00:25:36 :Donc, voilà.Et puis, par exemple,là, je leur tourne.OK.Donc, vous allez voir, maintenant,grâce à cette méthode-là,si je retourne ici,hop,j'ai commentsNumber,et ça me compte, en fait,le nombre de commentaires que j'ai.
00:25:53 :Donc,cette méthode-là, en fait,vous permet de...de gérer un peu les chosesdans votre...dans la sérialisation.Par exemple,je ne sais pas si...
00:26:05 :On va faire un truc.J'avais une idée,je ne sais pas ce que c'était.Si je disais que l'instance,si ici, notre booléen,notre booléen, ici,le to-do item,il a true.
00:26:19 :Donc, si...si je complète l'aide,on pourrait très bien direto-do item,tac,et puis modifier, en fait,ce que va retournerle complet aide, ici,pour l'afficher différemment.
00:26:33 :On pourrait très bien dire,hop,terminé.Tac,ça recharge.Donc, avant, là,j'avais un false,j'avais un false.Est-ce que j'en ai un sous?Je ne sais plus.
00:26:45 :De toute façon,je n'en ai aucun sous, en fait.Euh...Je ne crois pas.Sinon,je vais en passer à un sous.Ah, si.Là, celui-là.
00:26:53 :Donc, celui-là,ce to-do item,il est bien complété.Il est à sous.Du coup,ça m'a fait bien terminer.Voilà.Donc, en fait, ici,ça vous permet de contrôler,en fait, les données,comment vous les affichez.
00:27:06 :Cette instance,ça représente bienle nom de la méthode.C'est vraiment la représentationde la sérialisation.C'est bon pour vous, pas?Oui, excellent.C'est très compliqué,je pense, sinon.
00:27:18 :C'est quoi?C'est très intéressantde gérer les sérialisers comme ça.Ah, merci.Franchement, non,mais j'ai bossé un peupour pas très longtemps,quelques mois,pour une boîte,juste à faire du DRF.
00:27:31 :Et en fait,j'ai appris trop de trucset je trouve ça trop bien.Et du coup,je pense quedans pas longtemps,je vais me mettre à fairepas mal de front aussiparce qu'avec DRF,tu contrôles plein de trucs.
00:27:42 :C'est extra.Et...Il y a un truc que je voulais,est-ce que je peux vous montrer?Ouais,ça me fait penser...Ah, pas de souci, Baptiste.
00:27:53 :Pas de souci.J'ai tendance à...Ouais,je vais dépasser un petit peu,mais...Du coup,ça me fait penser...Je sais pas si...Ouais, si, on va en parler maintenant.
00:28:08 :Bon, bien sûr,ça, c'est pas super propred'appeler comme ça,enfin,de faire un QoS comme ça.Il n'y a plus propre à le faire.
00:28:15 :On pourrait très bien diredans notre modèle,sur toDoItem,qu'est-ce que je vais faire?On pourrait très bien dire...On va créer une...une propriété.
00:28:29 :On va l'appelercommentsCount.Ouais, ça me paraît pas mal.Ici, on va retournerself.commentsparce qu'ici,on a créé l'attribut comments.OK.Comments.Ouais.Mince.
00:28:47 :Count.Donc là, ce que je pourrais faire,je pourrais très bien...Ça s'appelle comment, ma méthode?CommentsCount.Je sais plus si je peux l'appliquerdirectement comme ça.
00:28:58 :Ouais, si, je crois.Si, on peut le faire.C'est bien sûr.Comments.J'ai le deux faits.CommentsCount.Donc là, j'ai une propriété.Et si ça bug,donc, on voit,mais normalement, c'est bon.
00:29:10 :Tac.Voilà, c'est bon, ça passe.Donc là, en fait,dans votre Serializer,vous pouvez utiliserune propriété de votre modèle.Vous baissez une propriété.Et ça passe.
00:29:22 :OK?C'est bon pour vous,ça aussi ou pas?J'ai pas vu la propriété,excuse-moi.Excuse-moi.Alors, vas-y.Tu la retrouves oùdans ta visu?Alors,ici, dans mon...
00:29:36 :dans mon modèleToDoItem,on est d'accord qu'ici,j'ai créé un attribut commentsà ToDoItemdans une relation inverse.Oui.Donc,en fait,ici,j'ai créé une propriété làavec un méta de CommonsCount.
00:29:53 :Et donc,je retourne le self,donc pour chaque instance,le nombre de commentaires,je les compte.Donc,ça s'appelle CommonsCount.Et en fait,tu peux l'utiliserdirectement dans le Serializer.
00:30:07 :OK?D'accord.Voilà.Toujours savoir,c'est bon à savoirparce que les propriétés,j'en utilisais plein.Une fois,j'avais créé un...Pour ceux qui ont connu PHPPB,je ne sais plus s'il y en a qui ont connu.
00:30:22 :Oui.J'avais recréé un espèce de PHPBen Djangoavec systèmede création de forum,de compte,customisation du coupdes salons,tout ça, machin.Et donc,je comptais par exemplepour chaque utilisateurtous les messages,ainsi de suite.
00:30:39 :Donc,les propriétés,moi,j'en suis...OK.Bon,ça,je n'ai pas de façon précised'en parler ce soir,mais ça m'est venu à l'idéedu coup au passage.
00:30:51 :Vu que je l'avais faitdirectement comme çadans le...Il n'y a plus proprede le faire comme çaen propriété.Je pense que je pourrais...
00:30:59 :OK.Un truc qui...Là,je n'ai pas trop intérêtde le faire,mais je vais peut-êtrevous le montrer comme ça.Par exemple,on va finir là-dessus.
00:31:10 :Ça me paraît pas mal.Est-ce que je pars sur...OK.Donc,on a vu que là,il y avait doncdans la stérilisation,il y a TourApplantation.
00:31:20 :Par contre,ici,on va passer sur notrestériliseurqui nous sertpour la créationdes instances.Donc,là,on a une méthode,par contre,qui, elle,c'est pour la déstérilisation.
00:31:33 :Donc,elle est là.Elle s'appelle,en fait,je crois que c'estTourInternal.Voilà.C'est celle-là.Et, en fait,ici,non,c'est pas ce que je voulais faire.
00:31:48 :Ici,en fait,je vais le laisser comme ça.Tac.Donc,ce qu'on va faire,alors,on va fairedatava être égal àdata.copy.On est obligéde travailler sur une copie.
00:32:04 :Alors,je vais vous donner un lienpourquoi je fais ça.Sur les datasqu'on va recevoir,en fait.Hop.Aidez-vous.Hop là.Je ne sais plusoù je l'avais lu.
00:32:21 :Parce que,voilà,quand vous,voilà,quand vous travaillezsur des objets couridiques,en fait,pour le modifier,c'est écrit là.Vous êtes obligéd'en faire une copie.
00:32:34 :Voilà.Je me suis fait avoirplus d'une fois, en fait.Je ne comprenais pas.Non, je ne sais pas.Donc là,on est obligé de faire une copie.
00:32:42 :Ici,dans le data,on doit faire une copie.Je crois qu'il y a eu...Je ne sais pas si il y a un messageou quelqu'un a une question,non ?
00:32:50 :J'ai un doute.Non, c'est une erreur.OK,pas de souci.Donc,voilà.Donc,quand vous travaillezavec tout Internet Value,vous êtes obligéde faire une copie.
00:33:01 :Moins qu'il y ait une technique.Mais,perso,je ne l'ai pas trouvé.Donc,ici,en fait,quand on a rentréles donnéesqu'on va vous envoyer,ici,vous pouvezles retravailler.
00:33:14 :Ce que je vais fairen'a aucun intérêt ici,mais c'est juste pour vous montrerun peu le principe.Donc,par exemple,si on vous envoiele front,on envoie du couple titre.
00:33:24 :Eh bien,vous pouvez direce qui estrenvoyéici,on peut dire,je ne sais pas,le mettreen majuscule,par exemple.Donc,on peut direje ne sais pas,le mettre en majuscule,par exemple.
00:33:39 :Et donc,là,ce qui va se passer,c'est que sion va faire une posteici,on va faire simplementtac,hop,on va mettretestde21nullvalue.
00:33:55 :Je mets test.Normalement,si je ne lance pasle serveur,ça ne va pas fonctionner.Hop là.Voilà.Donc,on vavoilà.Donc là,il me l'a crééet vous voyez ici,c'est passé dans monserializer.
00:34:11 :Mon serializer,ici,ma méthode,elle me l'a mis en majuscule.D'accord.C'est bidon,ici,je suis d'accord,mais c'est justepour vous montrerqu'en fait,vous pouvez manipulerles donnéesqui vont entreret en faire un peuce que vous voulez.
00:34:27 :Donc,je l'avais utilisé une fois,je crois,mais en fait,j'ai du mal à y toucher.En général,je ne vois pass'il y a beaucoupd'intérêt à y toucher,mais j'avais du le faire une fois.
00:34:38 :C'est pour ça queje l'ai connu.Et,donc,voilà.Donc là,pas grand intérêt,mais ça existe.Et,une autre méthodeque je voulais vous montrer,c'est que là,on l'utilise du couppour faire une créationd'instance.
00:34:53 :Donc,il est tout à fait possibleaussi,du coup,de,on va se calmer avec ça,tac.Ici,de modifier,enfin,de customiser un peunotre méthode create.
00:35:07 :Alors,ici,on va,donc là,le but,c'est de créer des instancesde todo itemdans notre poste.Donc,ce qu'on va faire,donc c'est todo item,c'est .object.create,
00:35:23 :et on va lui envoyer,en fait,les donnéesqu'on a,qu'on va recevoir.Donc,de base,c'est ce qu'il fait.Et donc,de base,ce qui se passe,du coup,c'est que,on retournenotre item qui est créé.
00:35:41 :Mais,c'est un peucomme des formulaires,et donc,j'en ai déjà eu besoin.Vous pouvez très bien aussi,faire des choses en plus.Donc,par exemple,créer,par exemple,un commentaire par défautqui va être attaché.
00:35:55 :Donc,par exemple,c'est un peu plus avancé,mais,ici,donc,dans nos commentaires,on a bien todo item,commande,create date.Eh bien,le todo item qui va être attaché,c'est celui que l'on créejuste au-dessus,là.
00:36:14 :Voilà.Et puis,en commentaire,on va mettre un commentairepar défaut.On le met par défaut.Voilà.Et donc,là,quand je vais créer,c'est mon instance,quand je vais faire une poste,donc,on a ça qui va se passer.
00:36:29 :Pendant la création,on va,en plus,créer un commentaire,ici.Donc,je ne vais pas encore faire une connerie.Tac.Donc,ici,je suis là.
00:36:40 :Je retourne sur ma poste.Donc,là,je vais faire un dernier test.Test,peu importe.Hop.Donc,là,je vais sortir d'ici.Donc,il s'appelle dernier test.
00:36:52 :Dernier test.Et ici,commentaire,commentaire,commentaire par défaut.Voilà.OK ?Ouais,super.Donc,voilà.Donc,si je résume,parce que ça fait pas mal de choses,au final,depuis le début.
00:37:10 :Donc,quand on a,ici,on l'a vu,on n'a pas besoin.Tac.Si je résume,on a,donc,nos deux modèles,tout,donc,tout,tout,tout,tout,tout,tout,tout,tout,tout,toutOK.
00:37:33 :Donc,on va іmmédiatement aller en出版,on va immediately aller en出版 ici.So,justement,c'est desktop language.Le connecteur device est dégageant ici,du coup,sale.
00:37:42 :Alors,ça nous permet d'avoir tout près entendu.Pour réussir,euh,pour d'ailleurs,une très excellente expérience.C'est cela,c'est donc l'offre concrète de Commands,aussi,pour profiter du console,là,environ,remplacé par un ...
00:37:55 :de là.Donc,on a vu que c'était plus sympa,du coup,pour le contrôle,de créer un attribut,qui a le même nom ici,euh,donc,Commands,on va l'appeler Commands,et qu'on utilisait,du coup,un Serializer qu'on avait créé plus haut,et qu'il fallait lui passer,lui passer le menu,
00:38:11 :dégage sous,parce qu'on,parce qu'on renvoie plusieurs instances.Euh,on a la même méthode sous la présentation,du coup,qui permet,euh,la sérialisation,en fait,de donner du contrôle.
00:38:23 :Voilà,on avait ici,euh,le complète,ici,on l'envoyait terminé,à la place de mettreau flou,au false.Et après,au niveau,là,du,mince,du Serializer,qui est utilisé pour la poste,pour la création,donc,on a joué sur la validation d'un champ spécifique,alors après,juste pour vous le dire,
00:38:46 :vous pouvez très bien aussi faire,euh,une validation plus générale avec Validate,hein.Voilà.Donc,ça,on peut faire ça,voilà.Euh,tac,comme avec le jonglet,les formules,avec les methods.
00:39:00 :On avait tout internal value,donc,pour les données qui rentraient,on les transformait,et on a modifié,du coup,la méthode Create,comme,quand on fait du patch ou du poste,il existe la méthode Update,aussi.
00:39:12 :OK ?Donc,vous voyez,vous pouvez vraiment tout contrôler avec le Serializer.Il y a des choses qui se font,en fait,avec la fraction d'office,et comme,euh,on peut surcharger,en fait,et ainsi de suite.
00:39:24 :Euh,donc,voilà un peu tout ce que je voulais vous montrer ce soir,du coup.Est-ce que ça a été ?C'est super intéressant.Merci.
00:39:31 :Merci.Ben,ça fait plaisir,du coup,parce que je,je me suis dit,j'espère que ça va pas être trop long,euh,j'ai pas été trop vite,ça va ?
00:39:41 :Non,c'est bien.OK.Non,c'est bien,c'est bien,c'est bien.C'est pour ça qu'à la fin,je vous,je préfère faire un petit récap,parce qu'on a fait pas mal de choses,et moi,la première fois que j'ai commencé avec DRF,il y a tellement de choses comme ça que,
00:39:56 :pff,à chaque fois,je revenais dessus un peu tous les soirs,ce que j'avais fait,parce que je me perdais un petit peu.Donc,maintenant,je suis plutôt hoppé dessus,euh,parce que je suis plus le Django de base,vraiment,mais,euh,je commence à vraiment bien mes DRF,
00:40:10 :et,parce qu'on avait vu,du coup,Django Extension,donc,voilà,vraiment,là,euh,vous pouvez vraiment contrôler votre API,et,parce qu'il y a aussi tout ce qui est,Serializer,tout court,sans le modèle,quoi.
00:40:26 :Mais là,donc,vous avez plus de contrôle,et je m'en sers surtout,par exemple,avec les,les applications de gestion de compte,où je vais faire des choses,vraiment,pour,euh,envoyer des liens d'activation par e-mail,ou autre,quoi.
00:40:40 :Euh,donc,voilà.Est-ce qu'il y a des questions,ou pas,par hasard ?Si je peux y répondre,il n'y a pas de souci.Ou est-ce que c'est bon pour vous ?
00:40:49 :Euh,non,moi,je suis en,je suis en mode découverte,donc,euh,pour l'instant,pas de questions.Moi non plus.OK.C'est bon.C'était très intuitif.
00:41:03 :Ouais.Merci.Euh,j'espère que,vraiment,ça vous a intéressé.Des fois,les exemples sont un peu bidons,quoi,mais c'est vraiment,je trouvais que le ToDoItem,en fait,c'est vraiment un exemple simple,donc,euh,je vais partir sur du langophilter,aussi,là-dessus,une fois,sur un prochain mentorat.
Aucune occurrence trouvée pour « ».