Session du 25 novembre 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 DRF
Nous allons continuer avec les serializers et ModelSerializer
00:00:00 :桤aurais QiaoqueƞƞƝƝƝƝ Eff‐qƝƝƝƝƝƝƝkillerspierre VAETnon je ne vais pas téléchargerje ne vais pas faire çaje vais le supprimerhop làje vais aller sur la page de présentationje vais mettre comèteje vais mettre brotherstacen fait ils ont choisi leur navigateuret j'aime bien cette IA là
00:01:06 :parce que cette IA là elle cite les sourcestout le tempset ils ont fait un navigateur internet carrémentdonc je ne sais pas ce que ça vautavoir jusqu'à le testerça ne coûte rien de testerle truc c'est que moi je suis vachementcomment direje suis très habitué à mon google chrome
00:01:22 :j'ai mon environnement de travail google chromej'ai mon multicompteoù je peux gérer mes différents comptes avec chromedonc je peux switcher comme ça facilementdonc voilà aprèsje vais tester voirdu coupest-ce que tout le monde était là la fois dernière ou pas ?
00:01:38 :je ne sais plusje m'en souviensje m'en souviens qu'il n'était pas làles autres tout le monde était là la semaine dernière ?moi ouiThomas ouaisj'étais là la dernière foisouais et jacquandreétait là aussiet ericeric était là je croisoknon tu n'étais pas là ?
00:02:10 :ah non oui c'est vraieffectivementdu coup on va prendre là dessussur cette application làde créer une API sur un projet simplemais pour voir un peu différents conceptsdonc on va partir sur créer une APIavec Django Rest Frameworkokattends j'ai un bruitest-ce que tu m'entends Thomas ?
00:02:42 :ouiça fait un espèce de bruit de fond vachementmerciça fait un espèce detu es encore en voiture je pensedu coupon s'était arrêté où ?
00:02:56 :je vais lancer montacoù en serveur on avait en fait fait quoi ?on avait une première vue d'APIdonc on avait vraiment fait une vue basiqueoù on se tapait tout à la maindonc évidemment on fait ça pour les tests au débutpour présenter un peu le concept et après on fera plus ça
00:03:12 :et on avait créé un serializerdonc est-ce que je reviens dessusou c'est bon pour tout le mondecette partie serializer ?c'est bon pour moi persotu peux revenir dessus rapidement pour ce qu'on te veutpeut-être Joannaexcuse-moic'est bon pour moitu as essayé de me faire un recap
00:03:34 :ouais ouaisdonc avec jangouras framework en fait c'est vraiment pour faire des APIeton avait deux modèleson avait trois modèlesles auteurs, les livres et les empruntsvous voyez c'est pas des modèles de fou furieuxça va rester très pédagogiquemais assez minimalistepour le projet mais c'est très très bien
00:03:54 :avec des sorts NKdonc c'est parfait pour voir plusieurs conceptsdonc voilàquand on va créer un livreon va rattacher un auteur et quand on va avoir un empruntet bien l'empruntça va être rattaché à l'utilisateurje vais mettre mon téléphone silencieuxl'emprunt va êtrerattaché à l'utilisateur
00:04:14 :et forcément il va y avoirun livre aussidonc on a des relations comme çaavec jangouras frameworkon pourrait très bien aller au niveau de notre APId'aller taper des vues comme ça directementalorsqu'est-ce que je fais là ?
00:04:32 :c'est presque comme si on avait une vue de jangoursauf qu'on va utiliser un décorateurAPI viewpour faire une vue entre guillemets APIce qui nous permet en plus de générerune interface en fait avec jangouras frameworkque vous allez voirpour ceux qui n'étaient pas làet dans cette vue on autorise les méthodes GET et POST
00:04:50 :alors il faut savoir queon peut très bien même dans l'APIfaire notre vueet puis ne pas utiliser de sérialisersj'ai déjà vu ça dans un vieux projetje pense que quelqu'un doit faire ses testsj'avais dû oublier ou je ne faisais pas parce qu'il n'y avait pas pensé
00:05:04 :mais c'est hyper importantutiliser des sérialiserspour la sécurité c'est topet pour centraliser de la logiquec'est top aussi. Des sérialisers c'est quoi ?
00:05:14 :on peut rapprocher çades formulaires avec djangosauf qu'on va appeler ça des sérialisersc'est ce qui va permettre en faitde transformerle format JSON en objet Pythonou à l'inversetransformer l'objet Python en JSONpar exemple icij'ai un sérialiseravec le champ IDc'est le PK
00:05:38 :la base de donnéesle name ici pour l'auteuret icion utilise cette case sérialiseron va définir les méthodes CREATEpour sauvegarder l'instance en base de donnéeset la méthode UPDATEça va être pour modifierune instance existantealors là je fais beaucoupde logique moi mêmeparce qu'on utilise sérialiser
00:06:02 :mais on va voir par la suitequ'on peut utiliser modèle sérialisermais là on commence avec le principe du sérialiseret donc dans notre vueon autorise que les méthodes GETet POST donc récupération de donnéesou créer une instanceon vadéfinir un query set icidonc on va récupérer tous les auteurs
00:06:22 :on va utiliser le sérialiserdans lequel on va envoyer le query setMANY, ASLUça en fait il fautle spécifier pour dire qu'on attend une listeon a un query set de plusieurs instanceset on fait un return iciet on utilise bien l'objet RESPONSERESPONSE de Django REST Framework
00:06:40 :quand vous travaillezavec Django REST Frameworkpour les données, vous utilisezRESPONSE, cette classe làplutôt que de faireun simple dictionnaireon va envoyer ça de RESPONSEon met en quelle méthode du méthode POSTici on va utiliser ce même sérialisersauf qu'on va envoyer les datasde notre query set POST
00:07:02 :donc ici on va rentrerdans le cas du CREATEici, comment on va le CREATEon va récupérer toutes les données et on va juste faire un CREATEBASICdonc voilà, si le sérialiser est valideon le sauvegarde, on envoie une réponseavec les donnéeset le statutalors moi j'ai souvent vu ça, c'est que le statut
00:07:22 :icibon là c'est une méthode GETon ne le spécifie pas, ça va renvoyer une 200mais ici du coup, là on est dans une méthodePOST, on veut renvoyerun statut200 incl. yield
00:07:36 :et en cas de problème, si c'est pas valideon va renvoyer un statut BAD REQUESTavec les erreursdonc vous voyez, le sérialiser en faitil va envoyer pour vous les bonnes donnéesici on ne va pasentre guillemetsdéfinir nous mêmeles erreurs et ainsi de suiteécrire entre guillemets dans le dur
00:07:56 :les erreurs, on va utiliserSERIALISER.ERRORS qui va renvoyer les erreurs pour vousvoilàje fais là un peu vite, mais c'est que ça vapour l'instantpour ceux qui...
00:08:12 :Eric et Johanna, du coup est-ce que c'est bon ou je suis allé trop vite ?c'est bon Johanna, okc'est bon, c'est bondonc là, ah ouidu coup forcément on a défini une URL iciavec cetteAUTHORLISTENCREATalors je le dis, je vous rassure, icion fait une API VIEW comme ça, là on est vraiment
00:08:34 :entre guillemets au plus bas niveau de délaid'Angular Frameworkon se tape tout à la mainet c'est vraiment pour commencer par du basiqueet voir comment ça fonctionne en arrière plandonc là, icij'arrive sur ma vue, sur metadgetdonc ici j'ai bien une réponse de 100, ok
00:08:50 :et là je récupère bien tous mes auteursensuitesi jamais on veut ici aller créer un auteurhoplà on va reprendre la structurehop, on n'a pas besoin d'ID forcémenton va l'appeler, je ne sais pasautrehop, je fais une POSTet là, j'ai bien iciune descente créative ici
00:09:18 :qui est làet j'ai l'auteurqui a été créé et ça me renvoie bien du coupdans réponse ici, je suis oùdans POST, làet en arrière plan de la table, ça me renvoie l'objet crééje vais juste faire un truc vite faitje vais juste faire un truc vite fait, je vais revenir sur ma guette ici
00:09:40 :ethop là, oui forcément ça ne marchera pasça risque pas de marcherhop làet ce qui se relance, voilàhophopje vais mettre un testdata, qu'est-ce qu'il me fait ?
00:10:08 :il ne parse pasah ouije recommence, voilàtactacvoilàok, donc là, on a crééune nouvelle instancesauf que là, ça n'a pasil me renvoie une 200, okmoi ce que je veux, c'est vraimenton va remettre ce qu'on avait icije vais spécifier vraiment
00:10:36 :c'est une convention qu'on a créé une nouvelle ressourcec'est pour ça ici que je redéfinisc'est bon ça du coup ?on peut passer à la suite ?
00:10:48 :alorsmaintenant, on vavoir un peu ce qu'il se passe avec le détailj'espère qu'on va avoir le tempsd'aller sur les serializersc'est pas grave, de toute façonon va peut-être faire ça en 5, 6, 7voire 8 menthoras, voire plus je penseon va se faire une longue série de menthoras
00:11:06 :sur DRSdonc on va se créer maintenant une nouvelle vuehopalors non, ça va me saouler parce qu'il ne va pas forcémentse faire ce que je veux làdonc on repart sur une API viewici et on vacomment dire, autoriserune méthode getce ne sera pas pour une liste mais pour une instance
00:11:28 :une output pour modifier une instanceetune méthodedelete iciet on va l'appelerici, detailon va avoir une vue de détaildonc la liste ici, enfin cette vue làon va s'en servir pour récupérer toute une listedes auteurson va l'appeler ici pour créer l'auteuret là pour le détail du coup
00:11:52 :on va avoir besoinde la clé primaire par exempledonc là en fait c'est juste du dongo normalet ce qu'on va faire du coupau début de notre vue, c'est qu'on va essayer de récupérerpar exemple l'auteurcomme çadonc.get
00:12:10 :il y a quelqu'un qui essaye de parler, ça bugje pense, non, est-ce que quelqu'un essaye de m'envoyer un messagemais il y a quelque choseje regarde dans le chatbon, écoutezn'hésitez pas à me couper s'il y aune question ou autreiciet ce que vous connaissez d'ailleurs, c'est pas forcément
00:12:32 :tout le temps utilisé çaon va utiliser une exception, très pratiquequi est rattachéedonc àà tout modèle djangoon va se faire un auteur .
00:12:44 :dothnat existe icidonc si jamais il n'est pas trouvéqu'est-ce qu'on fait, et bien on va tout simplementretourner directementune réponse avec un status codeicion va se mettre unhop la statuset on va se faire unhttp 404vous avez un peu le choix ici, voilà
00:13:06 :pourquoi il ne l'a pas trouvédonc comme ça dans notre APIsi jamais il ne trouve pas l'auteur, on renvoie une 404 tout simplementmaintenantalors on va se rendre sur leschéma un peu classique, ici on est dans le casd'une méthode getune méthode getqu'est-ce qu'on va faire, on va
00:13:28 :avoir notre serializer, pareilon vadu couputiliser le serializer, et on va le placer icijuste notre instance d'auteurdonc la différence ici, c'est qu'on n'a pasde spécifier many, okpuisqu'on a justeune instanceetvoilà, de manièrebasique ici, on va retournericiparce que le serializer il doit nous renvoyer
00:13:56 :donc c'est pour ça en fait, on a une sacrée couche d'abstractionpuisque le serializer il s'occupe de vous renvoyerles datas tout seul, entre guillemetsc'est ça qui est génial, c'est quevous avez la logique iciet ici on n'envoie que serializer.data
00:14:08 :voilà, les donnéesça fait beaucoup de choses pour nous, entre guillemetset c'est hyper bien çadonc maintenant, sion va dans une méthode pourmodifier en fait notre objet, notre moucouteicitac, on va dire quoi, donc c'est pareilnotre serializer, ça va être leserializer, et hop
00:14:28 :donc voilà l'auteurici il faut bien y penserà envoyer iciles donnéesde la requête, ok, comme dans lesformulaires Django, en tout cas c'estle même principe, et c'estpareil, si le serializerhop làil ne reconnait pas la fonctions'il est valide, qu'est-ce qu'on faittout simplement
00:14:52 :on fait un saveici, tout simplementet on va pouvoir retourner notreréponseavec lesdatasvoilàje ne sais pason peut spécifier une réponse icion va laissercomportement par défautouais ça me parait pas malet sinon icion va envoyerles erreursau cas de
00:15:24 :au cas où si jamais c'est pas valideet qu'est-ce qu'on fait, on envoie icinon, statusicialors c'est un bad requestet 400, tacun bad request, voilà c'est la modificationet là on a encore le cas qu'on n'a pas encore vuici ça va êtrealors je pourrais mettre un else
00:15:48 :mais je préfère être expliciteaprès vous faites comme vous voulez, mais moi je préfèreêtre explicitedans le cas d'un delete iciqu'est-ce qu'on va faire, tout simplementon ne va pas utiliser de serializeron va faire un delete de l'instance directementpar contre icice qui peut être commun
00:16:06 :c'est d'envoyerle statut ici, ça va êtrealors c'est no content, ici c'est204 ici, voilàc'est juste qu'on a supprimé et c'est touttout simplementdonc, maintenant on va allerest-ce que c'estbon un peu pour la logique de tout ça iciget, on récupèreune instancequand on fait une modification d'une instance
00:16:30 :c'est comme un formeon vérifie s'il est valide, et du delete on supprimesimplement, okle dernier statutest mal écrit ici, merciJohannaah ouais j'ai fait n'importe quoistatusok, mercialors à la place des elseon aurait pu mettre un select caseun quoi ?
00:16:54 :un select casefaire du match case ?ouaispourquoi pas, moi j'utilise jamaisj'aime bien la visibilité du if et le ifmais après c'est commetant que t'aslà on en a trois mais quand on en a un xça commence à être compliquéaprès de toute façon
00:17:14 :tu peux pas en avoirentre guillemets, tu peux en avoir 4-5 maximumentre guillemets si t'as leaprès t'as une patch, mais ouais tu peux en avoir beaucoupentre guillemets, de différentesdonc ouais, moi pendant ce cas làj'utilise le if et le ifmais après oui tu peux
00:17:30 :faire comme tu veux entre guillemets, n'importe la logiquesi tu veux faireokben écoutez on vafaire une url icialorson va ici surune instance, on va vouloiravoir leje fais n'importe quoitacon va avoir la clé primaireet du coup on va utiliser notre
00:17:58 :auteur détailici doncauteur détailet on va l'appelerallez on va lui mettre un nomtrès simpleauteur ici détailnickeldonc là maintenantsi je vaisj'ai pas fermé mon serveur normalementj'ai mis auteurouais c'est çadonc il faut lui envoyer une pkune clé primaire
00:18:28 :donc ça va pas, pourquoiok j'ai fait une erreuroktacqu'est ce qu'il me faitok voilàdonc ici je récupèreje suis bien ici sur cette vue làqui est où icima vue de détailalors je vais mettre, on va faire un testici avec une clé primaire qui n'existe pas du coup
00:18:58 :exprèsdonc vous voyez là il nous renvoie une 404donc c'est bien ce qu'on a définien début avec le try exceptc'est qu'on envoie une 404et puis Eric au faittu me disais par rapport auxconditionsmais en fait ça de l'API view tu verras qu'aprèson s'en utilisera plus
00:19:18 :moi quand j'ai fait du DRF j'utilisais jamais de l'API viewhonnêtementon va simplifier tout ça je te rassurej'en ai pensédoncici on utilise bien notre serializer comme tout à l'heureet làavec une get on arrive du coup forcémentdans ce cas là, on retourne juste
00:19:36 :ce serializer et quand on fait une poutici par exempleje vais retourner, celle là vous allez voir c'est assez puissanthopvoilàdonc en fait on a bienun bouton pout qui s'est affiché iciet on a un bouton des lettresdonc en fait tout cel'interface elle se génère toute seule
00:19:56 :en fonction de ce que vous mettezsi je fais ça je vais appeler Varjavelau livreça marche pas pourquoije pense avoir un problèmedonc c'est pas dans mesokje regarde vite faitok donc à mon avisça va êtreça va êtredonc là j'ai bien data
00:20:28 :okje mets mon serializer iciet donc dans mon serializer je croishumje fais un updateok j'ai bien le nomje récupère le champ nomavec une méthode gethumkeyword argumentsouaiset çaet çaalors explique moi mon verreok ligne 36 iciligne 36
00:21:08 :ligne 36 okdonc ça c'est un tas la DRFpas de problèmedata égale réponsealors pourquoije réfléchis un peuje fais un update okje peux faire un délai si je veuxhumest-ce que c'est dans monc'est bizarre ça je vais retourner sur monje vais retourner dessus voir
00:21:42 :on va retenter le coupl'id je mets en Abah nonc'est ce qu'il faut spécifierj'ai peut-être fait une bêtiseouais voilà c'est çaj'ai un problèmedonc làça va être intéressantpour savoird'où ça vientdonc je viensdans cette méthodedonc on a okon a notre
00:22:16 :A bah voilàje vais trouver forcémentokoktout simplementtout simplement en fait j'avais envoyé directementla classe auteur et pas le serializerbonc'est bon pour revoir du coup l'erreur que j'avais fait làj'avais justehopdonc voyez ici j'ai fait une inputune modification on voit bien que c'est modifié à l'instant
00:22:48 :désolé pour contre tempsmais voilà ça arrive on débug ensembledonc làj'ai fait une input pour modifier et aussiça fait un temps de faire çaet hopdonc làje n'ai pas eu de contentdonc ça ne renvoie rienc'est juste supprimédonc dans le front eux ils peuvent récupérer par exemple le status code
00:23:10 :et dire qu'en cas de status codeils vont renvoyer dans le front genrevous avez bien suppriméest-ce que je peux continuer ou pasil a supprimél'instance en questionle pk1en faitdu coup il n'y a plus rienje vais récupérer çail a supprimél'auteur avec l'id1
00:23:38 :c'est toutest-ce que je peux passer à la suiteokalorsmaintenantdonc on a vuqu'on peut supprimerje réfléchis un peu à ce qu'on va pouvoir faireon va maintenanton vatoucher un petit peu au serializeron a vu comment fonctionnait la vueet on va voir que c'est un peu comme
00:24:16 :les formulaires Djangoon va revenir icivoilàle update icije fais ça en fait parce que je récupèrequand on met à jouron récupère le nomet imaginonsje vais revenir ici rapidementje reviens ici rapidementhopon va faire çaje vais faire un test ici
00:24:42 :voilàde toute façon dans tous les casil refuse que le champ soit videdonc ça respecte bien les contraintesici il me le metokdonc maintenantsi je supprimeclairement je n'ai pas le champon va faire que çadonc là il n'arrive pas à le passer
00:25:08 :donc dans tous les cas ça ne passe pasmais je fais ça pour les mises à jouren faitpour x ou telle raisonen fait on pourrait se dire queon sait pas et imaginons queon a une méthode où l'instanceelle est passée videet moi je veux que si l'instance est passée
00:25:26 :entre guillemets vide, ça récupère du coupl'ancien nom. Donc soit on récupèrele champ nameet donc sisi jamais onrécupère des données qui sont entre guillemetsqui renvoient un non icienfin au lieu d'envoyer un non je veux direon va renvoyer icil'ancien nomdu coup
00:25:48 :en gros ça fait soit on prendla nouvelle valeur soit on prend l'ancienneouais voilà c'est çadonc c'est simplementune méthode guette des dictionnairespythonsalors comme les formulairescomme les formulairesde Djangoicion peut avoir donc là on va pas faire un cleandans les formulaires on a la méthode clean
00:26:12 :mais avec DRS on a la méthode validate icidonc on peut se dire validate namedonc le nom du champ qu'on veutet ici on va placer çaen paramètrela valeurdonc vous allez voir c'est pastrès compliquéon va se dire par exemple, on va se faire un truc un peu bidon
00:26:30 :si la valeur icinew action name donc la premièreparamètre qu'on récupèredonc sic'est pasen majusculequ'est-ce qu'on va faireon vaune validationerreuret on va direle nom doitêtre en majusculevoilàet sinon qu'est-ce qu'on faiton retourne juste la valeurdonc maintenant
00:27:04 :si je retourne làdonc là je suis bien dans lechamp de validationje vais retourner sur maiciet je vais aller créer une nouvelle instancehop hoppas besoin de pkpas de virgule sinon ça va planteret on va l'appelerpar exemple je sais pason va l'appeler
00:27:28 :on s'arrêterait de faire çaarcel sans majusculeici je fais une postelogiquement si je sais pas ouvrirvoilà, vous voyez il me renvoieici le nom du champdonc on a undictionnaire, le nom du champet une liste avec l'erreurparce qu'en fait on pourrait très bien avoir plusieurs erreurs
00:27:48 :définies et donc dans la listeil pourrait y avoir plusieurs erreurs, là on n'en a qu'unedonc le fait de définirune méthode qui porte le nom du champici, après l'underscoreautomatiquementDjango Rest Framework va vous générer icidans l'erreur en cléle nom du champque si
00:28:08 :alors il faut que je retrouvesi on pourrait lenon on va le faire comme çaque si par exemple on faisait icion va faire comme çahop validateok c'est bien ça, les attributsokon va faire comme çadonc là on va dire icidans les attributs qu'on a
00:28:34 :donc par exemple icion pourrait se dire the name icialors on pourrait faire çaon va faire pareiltacon va le récupéreralors je vais essayer de faire un trucrapidementisUpperrécupérer comme ça l'attribut dans cette méthode làqu'est-ce qu'on va se faireserializerici.validationerror
00:29:04 :je vais mettreerreur pour tester est-ce que je préfère mon coûthophop làet pour l'instantje vaiscomment ça déjàje sais faire quelque choseje vais recommencercelui-làlui on vaessayer de faire çahopon va faire autre choseest-ce que ça a planté ou pas
00:29:36 :voilàdonc là vous voyezalors je vais expliquer ce que j'ai faitici j'ai directement défini la méthode validatedonc sans le nom du chienen arrièrec'est commeon va se concentrer sur DRFles serializersquand vous avez une méthode validateil va d'abord en faitvérifier cette méthode là et à la fin
00:30:02 :il va vérifier çadonc la méthode validateen général elle va être utilisée quand on vaentre guillemets combiner des vérificationssur plusieurs champs ensemblequand on va vouloir faire une vérificationsur un champ particulieron va vraiment utiliserle validatetiré nom du champlà je fais ça juste pour vous montrer
00:30:24 :que du coup quand je lève une erreur comme çalàDRFn'est pas capable de me direà quel champ ça appartientpuisque c'est une méthode validateglobaledonc il est pas capable de me dire que ça appartient au champ naïfdonc c'est pour ça icion peut l'utiliser pour faire des validations
00:30:44 :surplusieurs champs à la foisc'est pour ça que moi j'aime bienquand on travaille sur un champ surtoutvousvous allez vraimentdéfinirla méthode validate sur le champ en questiondonc comme çavous savezalors je vais copier ça du coupvous savez d'où vient l'erreurc'est bien le champ naïf
00:31:16 :donc si je reviens ici, que je fais çatac, que je met une majusculeil est bien créé maintenantokc'est bon ça du coup ce principe de validateokt'as dit que validateil est contrôlé avantmais peu importe si le validateil est mis en premier ou
00:31:36 :ou l'ordre importenon peu importec'est un peu commeon parlait quand même, c'est un peu comme les formulaires de Djangoavec la méthode cleanunderscore nom du champou la méthode clean globalc'est d'abord toutes les validations au niveau des champs qui vont se faireet en dernier la validation finale
00:31:54 :entre guillemetsdu généralet c'est assez valable pour DRF ou Djangoen généralokdonc là c'est coolon a vu lecomment direles validateet maintenant on a vu qu'on peut faire plus que lesserializers, on va maintenant passerdu coup avecun modèle serializerallezje réfléchis un peu
00:32:24 :on va le donner le même nomon va tout recommencer en fait, icihopon va tout recommencersauf qu'on va utiliser une classe qui s'appellehopmodèle serializerdonc là du coupcomme un form Djangoje fais encore le rapprochement avec un formulairebasiquehop, on aura une classe méta
00:32:50 :au lieu de redéfinirles champs comme on a fait tout à l'heurele champ aiguille, le champ d'âme icion va dire quel modèle on utilisele modèle hauteuret on va lui spécifier les champs qu'on veutdonc fil icion va dire par exempleon a l'aiguilleet le name
00:33:10 :voilà, si on a deux champson va mettre deux champs, mais là on pourra très bien dire aussiallpour spécifier tous les champsle modèleforme en faitc'est un peu ça, si je reviens icihop, vous voyezça marche toujours, parce qu'en faitdans mes vues, j'ai pas modifié le nom
00:33:30 :du serializer, j'ai justemodifié ici la classedont j'hérite, et là en faitben voilà, donc ça fonctionnedonc maintenantpas besoin d'utiliser une méthode create icipuisque sisi je veux créer un nouveauun nouvel hauteuril est créé automatiquementil est créé automatiquement parce qu'en faitle modèle serializer
00:33:58 :il va s'occuper en faitde ne pas redéfinir les méthodes createben voilà, il l'écrit icidonc on a la documentationj'aime bien avec DSCode qu'on a la documentationde la classe nationalisericicreate and update sont automatiquement définison peut surcharger si on veut, bien sûrmais là on reste vraiment
00:34:18 :sur un cas assez général de Djangoframework, ce qu'on peut fairedonc là on a faiton a enlevé la méthode validateon l'a enlevéon l'a enlevé mais vous voyezlà on a déjà gagné pas mal de lignes de codeet tout est géré entre guillemets automatiquementdonc là c'est plutôt cool
00:34:38 :et Arcel t'as mis çaben carrément ouaisc'est beaucoup plus simple, moi persoquand je bossais, j'ai fait quelques moisavec DRS, je vais faire 2-3 moisle modèle serializerdès que je pouvais l'utiliser c'était mon amije faisais quasiment que çabien quepas mal de fois je devais avoir des serializers
00:35:00 :entre guillemetssur le modèle serializerokdonc maintenantje réfléchis un peuon vaest-ce qu'on pourraitvoirallez, on va créer2 serializerson va créer les serializersavant comme ça et puiset puis comme çasur le prochainmontora, on va pouvoir attaquer lesvues entre guillemets
00:35:32 :on va pas rester avec nos vues iciqui sont entre guillemetsun petit peu chiantes ou photodéfinies, on va faire des vuesquand même plus sympasil est quelle heure ?
00:35:42 :on va se créer au moinspar exemple icion va se créer unbooket làon va arrêter demodèle serializeret donc là c'est basiqueencore une fois on va utiliserle modèle bookbook iciet on fieldpar exemplej'ai quoi comme champ ?
00:36:12 :title authorau sortje peux faire comme çaou fairemoi personnellementje ne fais jamais allje le fais là juste pour vous montrerj'ai quand même tendanceici à faire comme çaje ne sais plus ce que j'ai comme champdans cette book j'avais quoi ?
00:36:36 :si j'avais le titreforcémentet l'auteurtitre auteur çaj'ai plus tendanceça fait toujours copierà chaque fois que je passe dessusc'est vrai j'ai ce champ làje préfère les avoir sous les yeuxdonc là je fais comme çac'est expliciteça permet de les mettre dans l'ordre qu'on veut
00:37:00 :ouaisça permet de les mettre dans l'ordre qu'on veutouais ouaisc'est surtout que j'aime bien les avoir sous les yeuxdès que je fais des modifson verra que par exemple si je rajoute des propriétésou que je rajoutedes serializers en méthode fieldc'est plus avancé qu'on va voir
00:37:18 :au moins j'ai plus qu'à les modifier ma listeet si j'ai un all il faut que je remette toutj'aime bien avoir ma liste de champ définie comme çadonc on va se créer le serializer pour les empruntsetje pensequ'on va faire une méthode de validation dessus
00:37:40 :je vais juste définir basiquementun modèle serializereton va se faire la classe metacomme tout à l'heure on va avoir le modèleloanhopet on vase définir des champsalors on avait quoion avaituser, book, word, word, return, dateIDuserle livrela question et ensuite
00:38:18 :date d'empruntetreturndatevoilà alors ce qu'on va fairedu coup pour leon le fera la prochaine fois ça va prendre un peu de tempsmême si c'est un modèle serializeron peut faire comme avec un serializeron va se fairepour la prochaine fois ici une méthode validate
00:38:40 :avec les dataetd'ailleurs j'ai pu vérifier un truc avantmodèlec'estserializervalidateje vois quelque chose icidev validateouaisc'est ce qu'on a vu tout à l'heureouaisc'est ça dans les mette datala conventionc'est de mettre data en argument surnon c'est un serializer
00:39:22 :comment est attribué en conventionvalueou data okdoncdonc icion aura bien dataje vais bien faire comme la docet voilàdonc ici on fera une méthodede validationon va faire en sorte quequand on créeun empruntje réfléchis un peuje vais me le noter pour la prochaine fois
00:39:56 :on va se direinterdictionde créer unempruntavec une date de retourentre guillemetsdans le sens oùla date de retour on va l'enregistrerque quand la personne nous retourne le livreon va faire çaon va fairene pasemprunterun livredéjàc'est iciet puis
00:40:30 :tacdate de retouraprèsla date d'empruntvoilà, donc pour la prochaine fois on prendra là dessuson fera une méthode validateet puison s'amusera à créer ce qu'on appelledes serializers méthode fieldje réfléchis un petit peuet puis comme ça on pourra se créer nosnos vues, donc on utilisera encore
00:40:56 :des API viewparce qu'on a pas fini les serializers, je voulais vraiment montrer un peu ce qu'on peut faireavec les serializerset après quand on aura fini avec les serializerson pourra attaquer du couplacomment direl'édition renduequ'on peut avoir avec Django Rest Frameworkest-ce que ça a été ou pas ?
00:41:16 :dites moic'est bon ?c'est bon c'est bonest-ce que j'étais assez clair ouça parait un peu nébuleux ?non ça vaça me fait plaisirsi jamais il y a un truc que vous trouvez un peu flouvous me le ditesje vais les voir à tête reposée
00:41:40 :parce que je pense que je suis un peu fatigué pour pouvoir tout captermaisc'est bien expliqué quand mêmeouais c'est coolles vues nous servent juste pour créer l'interfacepour faire les démosmais ce qui nous intéresse làc'est de voir ce qu'on peut faire avec les résistances ici
00:41:56 :mais ce qui nous intéresse sur l'instant c'est les serializerset on n'a pas encore fini avec les serializerson va voir d'autres chosesdonc en faitje pense qu'on va faire encore au moins deuxau moins une ou deux séances sur les modèles serializersavant de passer aux vues
00:42:10 :voilàbah ouaison va se garder ça du coup pour la semaine prochaineje vais l'écrire au programmeest-ce qu'il y a des questions ?
Aucune occurrence trouvée pour « ».