Session du 02 février 2023 à 20h00
Développement Web & Frameworks
Programmation Orientée Objet (POO)
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
Mini-projet Django et premières APIs
Découvre comment créer un mini-projet Django et exposer tes premières APIs avec Django Rest Framework, puis les tester simplement avec Postman.
00:00:00 :Hello tout le monde, alors est-ce que les liens marchent déjà? Je vois qu'il y a pas mal de gensdonc ça semble pas mal. Et Simon, oui effectivement on pourrait faire un programme Python. Après OBS
00:00:17 :il n'est pas... moi je l'utilise du coup pour enregistrer les formations et je peux le lanceren ligne de commande mais il n'y a pas énormément de choses qu'on peut faire avec en fait. Tu peux
00:00:27 :le lancer avec certaines scènes mais il n'y a pas énormément de choses de possible.Et Péa, tiens j'en profite sur la page des mentorats, tu as un bouton là sur la session encours comme je t'ai dit ça se met automatiquement et tu as un bouton terminer l'événement et le
00:00:45 :seul truc que ça fait c'est que ça affichera plus le truc session en cours c'est tout.Ah d'accord, il faut que j'aille... ah oui, lien de l'événement.
00:00:52 :En fait si tu es actueliste tu vas voir là en fait maintenant automatiquement après la date,enfin l'heure de début ça met un truc session en cours avec le lien pour rejoindre et toinormalement tu as un bouton pour terminer l'événement et ça va juste dire que l'événementest clos et ça l'affichera plus quoi c'est tout. Ouais ça marche.
00:01:09 :Hello Jonathan. Salut Jonathan.Salut. Naguit ouais, après tout ça c'est des trucs aussi d'enregistrement comme Camtasia,le celui sur Mac aussi, c'est des trucs qui enregistrent vraiment l'écran.
00:01:23 :Le micro aussi je pense. Ouais ouais ouais mais c'est vrai que t'astoujours déjà faut bien les configurer puis après en tout cas je vais continuer ma recherche d'outils,peut-être que ça restera sur un Google Meet, je verrai PA là je pense que si je te mets uneadresse docstring ça devrait, tu devrais avoir accès aux enregistrements. Alors du coup
00:01:43 :enregistrement, manage recording donc ça c'est bon ok. Attends mais du coup je vais commencer à partager mon écran.Ouais. Je vais mettre l'écran, je mets celui là. Et coupe ta cam aussi parce que je crois que ça
00:01:57 :prend de la place, moi je vais te piner l'écran comme ça. Ouais. Je peux, où est-ce qu'il est? Attends, comment je fais pour...C'est bon. Ok donc normalement c'est tout bon. Et du coup il y a le chat et tout ça qui reste?
00:02:29 :Le chat, bonne question. Je crois pas qu'il apparaît, je vais revoir dans les rediffusions.Non. Je vais essayer, s'il y a des questions j'essaierai de les dire à l'oral. Ouais c'est ça,
00:02:49 :ouais ça c'est le mieux. Ouais je crois que le chat il apparaît même jamais en fait. De toute façonnon je vois dans la présentation de l'écran il y a que mon... J'ai mis le chat ailleurs. Ouais bah du
00:02:58 :coup ouais vas-y, ouais s'il y a des questions redis les à l'oral comme ça ce sera bon. Ok parfait.C'est bon Thibaut? Ouais c'est bon, je te laisse reprendre la main, je reste pas loin. Tu me textes
00:03:15 :sur whatsapp s'il y a quoi que ce soit et je continue d'admettre les gens. Ça marche, merci. Merci. Okbah du coup salut tout le monde. Comme d'habitude, attendez je vais essayer de voir un peu qui il y a
00:03:30 :comme participants. Je vois qu'il y a pas mal d'habitués, il y a aussi peut-être des débutantsou quoi. C'est comme d'habitude, vous vous en faites pas si vous vous êtes perdus. Donc là le
00:03:42 :programme pour ce soir, si vous avez pas de questions on peut en parler aussi si vous avezdes questions. La semaine dernière j'avais prévu de faire quelque chose sur les properties et j'étais
00:03:56 :malade du coup Thibaut avait rapidement pris le relais. J'ai vu qu'il en avait parlé et je voulaisjuste... Il y aura rien de plus, je vais rien rajouter de plus que ce qu'il a dit mais c'est
00:04:07 :juste pour vous donner un autre exemple parce qu'en fait les properties quand on voit ça onpeut se dire c'est un peu lourd et puis ça sert à rien. Vous pouvez me confirmer sur le chat que
00:04:15 :vous m'entendez bien puisque j'ai pas de retour pour l'instant. Ouais c'est bon. Ok merci. Mercitout le monde. Donc les properties quand on voit ça on se dit c'est un peu un canon pour tuer une
00:04:32 :mouche mais en fait ça peut plus servir qu'on ne le pense. Donc on verra ça et aussi je vousmontrerai, du coup c'est dans le programme, donc on va créer une application, une API avec DjangoREST Framework par dessus une application Django. Donc en fait pour ceux qui connaissent Django vous
00:04:51 :verrez qu'il n'y a pas beaucoup plus à faire que ce qu'on fait classiquement avec Django. Pour ceuxqui ne connaissent pas c'est pas grave comme ça vous verrez ce qu'on peut faire. Et on fera aussi,
00:05:00 :on regardera des requêtes Postman parce qu'en fait le principe des API c'est de pouvoir,enfin je vais vraiment brièvement, grossièrement, le principe d'une API c'est de pouvoir faire desrequêtes en gros sur des bases de données qui sont les bases de données de votre applicationmais via un URL. Et en fait cette URL là, soit vous pouvez le manipuler assez facilement dans
00:05:25 :un script ou via le web, via l'induit d'URL mais aussi dans un script Python par exemple. Et enfait l'API, ce qui est bien c'est que c'est vrai, enfin je l'avais dit la dernière fois, l'API c'estvraiment l'interface universelle entre l'utilisateur et votre application. Moi typiquement je fais que
00:05:43 :du développement backend, je touche pas du tout au CSS ou quoi que ce soit. Et du coup en fait sipar exemple je veux créer une belle interface graphique ou quoi, je vais aller utiliser unframework comme Streamlit que j'avais déjà montré et en fait je fais toutes mes requêtes URL à
00:05:58 :partir de ce framework là. Enfin bref, je vous montrerai un peu ce en quoi ça consiste mais çac'est le principe des API. Alors du coup pour juste un retour rapide sur les properties. Donc
00:06:10 :on va voir un exemple quand on n'utilise pas la classe, enfin le décorateur properties etquand on l'utilise. Donc c'est assez grand sur l'écran vous voyez bien. Ok, ok merci. Du coup
00:06:28 :donc là vous voyez une première classe, donc imaginez que vous créez une classe rectangle avecles attributs longueur et largeur. Donc en fait vous définissez ici vos attributs, donc longueur
00:06:39 :avec la longueur du paramètre, la largeur, et vous vous dites bah j'aimerais bien créer une classesurface qui est pour un rectangle, l'air du rectangle c'est la longueur fois la largeur. Donc
00:06:51 :là vous êtes content, vous dites ok bah ma surface c'est juste ma longueur fois ma largeur et j'aimon attribut surface. Donc là ok. Ici je mets juste une dunder method, c'est une méthode spéciale
00:07:05 :pour faire une représentation de ma classe, vous verrez ce à quoi ça fait. Ça je sais pas si vousavez déjà vu dans les fstring quand vous faites en tracolade le nom de la variable avec un égal.
00:07:18 :Voilà ici quand vous avez, ça peut être intéressant, je vais le faire ici plutôt.Là imaginez par exemple vous avez une variable,ma variable, et vous dites c'est égal à 35. Et vous voulez faire un print avec un fstring,
00:08:21 :donc vous faites print, ce qu'on fait souvent c'est print ma variable égal,ensuite là vous mettez ma variable. Donc là ça marche. Ce qu'on peut faire en fait c'est juste
00:08:44 :vous mettez directement dans les acolades, vous mettez directement ma variable égale comme ça,dans votre fstring. Et en fait ici il va prendre ma variable et il va lui mettre juste avec le
00:09:04 :égal. Comme ça vous n'avez pas à définir deux fois ma variable et ma variable. Il va directementécrire ma variable égale. Si j'avais écrit auto, c'est le nom de votre variable. Et comme ça vous
00:09:26 :avez directement ma variable égale, vous n'êtes pas obligé de, bref, ça c'était juste un.Donc du coup ici vous avez votre méthode spéciale pour afficher votre instance de classe plusfacilement. Donc ici vous définissez votre instance de classe avec une longueur 5 et une largeur 3.
00:09:52 :Quand on va faire print rectangle, il va aller chercher ici ma méthode spéciale. Mais parcontre ici qu'est ce qui va se passer quand je vais dire change la largeur. La largeur maintenant
00:10:03 :c'est plus 3, c'est 5. Et on va refaire un print du rectangle et vous allez voir ce qui se passe.En fait la première fois qu'il print, j'avais défini 5 et 3, donc self.longueur et self.largeur.
00:10:19 :Et du coup ma surface est 15 donc je suis content. Mais qu'est ce qui se passe maintenant quand jemodifie mon attribut et que je lui dis en fait ma largeur c'est 5, donc en fait il garde malongueur 5. Là il change l'attribut largeur 5 mais du coup, il est pas bête, il fait juste ce
00:10:34 :qu'on lui dit de faire, il ne met pas à jour la surface. Et ça vous voyez que c'est pas correct.5.5 ça fait pas 15. Donc du coup c'est aussi à ça que servent les properties. En fait la
00:10:47 :property surface, vous voyez bien que vous voulez qu'elle soit mise à jour automatiquement enfonction de la longueur et de la largeur. Donc en fait si au lieu de définir un peu d'une manière
00:10:57 :statique votre attribut de surface, vous le définissez ici avec un property. Donc là vousvoyez c'est exactement la même chose sauf que j'ai défini surface dans une property. Et maintenant,
00:11:07 :surface ça va être dynamiquement ma largeur fois ma longueur. Et quelle que soit la mise à jour queje vais faire. Donc là vous allez voir si je mets à jour. Donc on a bien ici la première fois,
00:11:19 :donc j'avais mis 5 et 3 donc normal. Et maintenant que je mets 5 et 5, bah il met bien ma surfacequi fait 25. Donc voilà c'était juste un petit truc en plus que je voulais dire par rapport à
00:11:32 :ce qu'avait fait Thibault. Même si en fait ce qu'avait dit Thibault ça rejoint tout à faitça. C'est pour pouvoir mettre à jour dynamiquement des attributs. Ça peut être ça peut être utile.
00:11:45 :Voilà pour les properties. Est-ce que c'est bon pour vous? Est-ce que vous voulez voird'autres choses pour les properties? Dites-moi dans le chat si c'est clair. Est-ce que vous
00:12:01 :voyez un petit peu plus l'intérêt du coup des properties? Ok, je passe du coup à ce qu'onpeut faire avec Django. Attendez je regarde un peu s'il y a des gens. Pas de soucis François.
00:12:23 :Je regarde un peu les participants. Dites-moi un peu dans le chat ceux qui ont déjà fait du...si vous avez déjà vu Django ou pas. Ouais, je donnerai le code. Pas encore. Django un petit
00:12:50 :peu. Je suis au début de Django. Bon du coup je vais en fait je voulais profiter de justement...là on va voir ce que je voulais vous montrer c'est Django REST framework. Donc c'est un framework
00:13:01 :qui permet de faire des API mais ça reste du Django quand même en base. Je voulais profiterde cette de cette session pour vraiment revoir les bases et le bas de Django. Vous allez voir
00:13:14 :qu'en fait c'est pas si sorcier pour créer un projet assez simplement. Là j'ai mis assez gros.Là le dashboard pour correction c'est le truc que j'ai fait juste avant. Comme ça si jamais
00:13:27 :je bug je peux y retourner facilement. Ok donc comme toujours qu'est ce qui se passe quand onveut commencer un nouveau projet? On crée un environnement virtuel. Donc moi ici je l'ai déjà
00:13:37 :fait. Donc je vais juste ici l'activer. Après ce qu'on fait dès qu'on veut faire du Django c'estquand on a notre environnement virtuel activé on installe Django. Voilà je vais pas le faire
00:13:51 :parce que moi j'ai déjà fait juste avant. Donc je vais vous montrer ce qu'on a dedans. Donc ona bien Django et Django REST framework parce que j'ai déjà installé mais je vous montrerai comment.
00:14:00 :Du coup là l'idée, l'objectif c'est de créer vraiment une toute petite application Django quifait vraiment pas grand chose. On va juste se dire, imaginez que vous voulez vous faire un
00:14:15 :propre tableau de bord, un dashboard et vous voulez mettre dedans des mesures que vous faitestous les jours par exemple. Et puis à terme vous voulez faire je sais pas un graphique,
00:14:26 :une évolution. On peut imaginer par exemple que tous les jours vous faites du web scrapping etvous allez chercher une cotation de bourse, une météo ou j'en sais rien. Et puis au fil des ans
00:14:40 :vous voulez faire une évolution. Donc c'est là aussi en quoi réside l'intérêt des API. C'estque vous voyez on peut séparer les logiques parce que si vous faisiez une application Django,vous vous dites voilà je vais faire un API c'est pour Application Programming Interface.
00:15:00 :Et du coup vous imaginez que vous avez votre cahier des charges, vous faites votre applicationDjango, vous dites voilà mon application elle va chercher les informations sur internet,après je les présente à mon utilisateur avec un template HTML et je lui fais des courbes etc.
00:15:22 :Et en fait petit à petit peut-être que ça va évoluer. Peut-être que vous voulez pas une courbemais vous voulez des statistiques. Voilà donc il faudra mettre à jour et tout ça à chaque fois.
00:15:32 :En revanche ce qui ne changera pas derrière c'est la donnée. C'est à dire ce sera toujours vousallez récupérer des données, vous les mettez dans une base de données etc. Donc tout ça
00:15:40 :le fait que la donnée ne change pas grâce à votre le fait d'avoir une API qui peut venirinterroger la base de données indépendamment de faire des graphs, faire une application,un truc sympa pour l'utilisateur. C'est en ça que réside l'intérêt aussi des API. C'est
00:15:59 :vraiment de décorréler l'application Django de vous, de votre besoin. Donc tout d'abord oncommence par créer l'application Django et par dessus on créera l'API REST Remark. Donc quand
00:16:18 :on commence il suffit de faire... n'hésitez pas à poser des questions parce que là je vais fairedes trucs de Django de base. Si vous êtes dedans ou si vous ne comprenez pas ce qui se passe
00:16:27 :n'hésitez pas. Donc on commence toujours par créer un projet avec Django Admin Start Project et vouslui donnez le nom du projet. Donc là on va dire Dashboard. Ok là vous avez vu il m'a créé un
00:16:41 :dossier et ensuite ce qu'on fait on va dans celui qu'on a créé et vous allez voir que normalementon a un fichier manage.py créé par Django et on a déjà un serveur opérationnel. Si je fais
00:16:59 :python manage run server, vous voyez ici j'ai un serveur de développement opérationnel doncc'est un URL localhost sur le port 8000 mais c'est fonctionnel. Ok donc on y reviendra après.
00:17:15 :Ensuite moi ce que je fais toujours c'est que je crée toujours une première application. En faitDjango ça marche par application c'est à dire vous pouvez avoir un projet Django A, faire desapplications dedans et avoir un autre projet Django B et utiliser les mêmes applications. Donc c'est
00:17:32 :tout simple. Donc il suffit juste de faire python manage.py. Donc là vous créez votre premièreapplication et moi mon application je vais l'appeler mesure. Ça va être elle qui va nous
00:17:45 :permettre de faire nos mesures etc de les enregistrer. Ok donc là maintenant si je retournevoir j'ai mon application mesure etc avec mes URL et tout le bazar. La première chose qu'on fait
00:18:00 :souvent, intuitivement, moi tout le monde fait comme il veut mais moi je commence par là, je vaiscréer mon modèle. En fait le modèle c'est ce qui va définir ma donnée, définir mon format dans ma
00:18:15 :table de base des données. Ok donc il définit mon modèle. Donc moi je vais définir une mesure.Je vais vouloir une porte. Ok je vais baisser ça et je vais lui dire je vais avoir mesure
00:18:39 :date qui va être égal. Donc ça va être un champ. Ah pardon j'ai pas. Hériter. Ici c'est de l'héritage.Bon vous en faites pas si vous connaissez pas, ça va me permettre d'hériter de tout ce qu'il y adans la classe modèle définie par Django. Ok donc là mesure date je vais faire un datetime
00:19:06 :field. Donc c'est models.datetime. Ok et je vais lui mettre un default datetime.now. Donc là en gros je lui dispar défaut tu me mets là où je vais créer ma mesure à aujourd'hui. Donc ça c'est comme ça et
00:19:40 :ensuite on va juste dire mesure val pour valeur. Et là ça va juste être un champ entier.Donc là maintenant j'ai créé ma table. En fait ici ça c'est comme si je créais une table
00:20:01 :dans ma base de données. Table mesure qui aura ces colonnes là. Donc une colonne mesure dateet mesure val. Et chaque entrée, chaque nouvelle mesure ce sera une ligne avec deux colonnes.
00:20:13 :Cette colonne là et cette colonne là que je vais devoir renseigner. Une fois qu'on a créé notreapplication etc. J'aurais peut-être même dû le faire dès le début. En fait quand vous créez
00:20:24 :votre application vous savez quand j'ai fait python manage start up mesure j'aurais dûdirectement aller la renseigner ici dans le settings de Django. En fait là on lui dit
00:20:36 :on vit au projet. Attention, ouais c'est ça Gabriel. En fait quand on fait notre premièreapplication il faut dire au projet Django bah attention j'ai créé une nouvelle application.
00:20:47 :Donc là ma nouvelle application c'est mesure. Ok donc là c'est très bien. Et ensuite donc làgrosso modo en termes de structure pour l'application il va rien manquer. Vous allez
00:21:01 :voir que là il faut encore que je fasse des choses mais pour l'instant c'est bon. Doncmaintenant ce qu'il faut faire c'est il faut créer les migrations. En fait ici j'ai juste
00:21:12 :défini le format de ma table de base de données mais je ne l'ai pas créé. Donc pour la créer onfait un python manage migrate. Donc là je crée en gros la base de données et ensuite je fais
00:21:26 :un python manage make migrations de mon application. Donc là en gros je lui dis quand j'ai faitmigrate j'ai créé ma base de données etc donc tout ce qui est user ça c'est un truc qui sefait automatiquement et ensuite je crée mon entrée dans ma table dans ma base de données pour ma
00:21:47 :mesure avec le make migrations mesure. Qu'est ce que je vais faire aussi je vais créer unutilisateur admin pour pouvoir aller dans l'interface administrateur. Parce qu'en fait si
00:21:57 :je fais ça, python run server, donc je vais voir, normalement tout fonctionne. Si je vais dans adminet là vous voyez en fait admin c'est Django qui le développe tout seul en fait c'est pas moi quile c'est pas moi qui lui dit c'est pas moi qui a développé ça mais il me demande un username et
00:22:18 :un password mais moi j'ai pas défini d'administrateur donc on va le définir ici. Je vais juste fairepython manage create super user. Là il va me dire, qu'est ce qu'il dit, lpa, on s'est fait
00:22:53 :python manage.migrate avant. De quoi? C'est le python manage.make migrations. Ouais. En fait jepensais pour moi je devais toujours faire python manage.make migrations et après faire le migrate
00:23:08 :pour envoyer les init. C'est d'ailleurs pour ça qu'il m'a mis un message d'erreur parce qu'enfait. C'est pour ça alors, ok. Ouais mais du coup je le fais après. Ok donc maintenant je fais python
00:23:24 :create super user donc là je crée mon utilisateur donc là je vais l'appeler admin. Je vais pasmettre d'adresse mail et ici je définis un password. Ok donc là j'ai créé mon python manage
00:23:52 :server. Ok je vais aller voir. Donc maintenant normalement je dois avoir mon interface admin.Donc là vous voyez j'ai un petit problème c'est que je vois pas mon application je vois justeusers donc là par exemple c'est juste le user que moi j'ai créé. Si je veux je peux en ajouter
00:24:15 :d'autres. Je peux même créer des groupes etc. Mais moi je veux voir mon application mesure pourpouvoir en gros l'administrer pour pouvoir la gérer. Donc pour ça il suffit en fait de vous
00:24:29 :allez dans votre application quand vous créez Django il crée automatiquement un fichier quis'appelle admin et c'est ici que vous allez venir enregistrer votre application dans l'interfaceadministrateur. Ok donc admin.site.register et là bien bien sûr il faut l'appeler. Donc
00:24:50 :from models import mesure. Donc là en fait on lui dit enregistre moi mon modèle mesure dansmon application dans mon interface administrateur. Ok. On retourne. Il retourne ici si j'actualise.
00:25:16 :Voyez donc maintenant mesure il est apparu. Donc maintenant si je vais dans mesure bah en faitdonc là vous voyez c'est mon champ mesure date et mon champ mesure val que j'ai créé. Donc là
00:25:26 :c'est bien un datetime field parce que je peux rentrer la date et l'heure. Et ici je peuxrenseigner n'importe quelle valeur que je veux. Ok ça va un peu? Dites moi dans le chat si vous
00:25:43 :n'êtes pas perdu si vous comprenez ce qu'on fait. Ok. Mais franchement n'hésitez pas à poser desquestions. Non mais oui là je vais vite mais je vais vite parce que je connais j'ai déjà fait.
00:26:14 :Mais vous verrez que si vous par exemple si vous suivez le cours qui est en ligne,le cours Django que Thibault fait, bah on y va vraiment étape par étape. Mais en fait là ce
00:26:23 :que j'essaie de vous faire ce dont j'essaie de vous faire rendre compte c'est que vous voyezmoi j'y vais étape par étape c'est à dire je crée mon modèle par exemple là quand Gabrielest là intervenu j'ai eu un message d'erreur j'ai suivi ce que le message d'erreur m'a dit.
00:26:41 :C'est juste que découvert pour moi pas grave. Ok bah au moins ça te permet de voir pour plustard et puis quand tu le découvriras tu seras peut-être un peu moins perdu. Mais en gros ce
00:26:54 :que j'essaie de vous dire c'est que quand vous faites une application Django, au plus vous allezen faire au plus ça va vous sembler logique en fait. Quand vous développez votre modèle,
00:27:04 :votre format dans un bus de données, bah après il faut le mettre dans votre système d'administrationetc. Vous voyez en fait c'est un peu comme si vous tiriez un fil et puis petit à petit il y a des
00:27:17 :choses qui se découvrent mais tout est lié. En fait ce qu'il faut faire attention quand on suitdes tutos c'est que on suit à la lettre ce qui se passe sans vraiment comprendre pourquoi on le faitet ce qu'il va y avoir derrière. Là en fait quand vous savez par exemple que vous créez votre
00:27:32 :application et vous savez qu'après vous allez vouloir l'avoir dans votre interface d'administrateur,bah vous dites ah bah tiens faut que j'aille l'enregistrer. Vous voyez c'est comme ça un peu
00:27:39 :petit à petit que vous allez réussir à progresser puis en le faisant vous même. Ok donc là onest où? On en était ici dans l'interface d'administrateur qui permet justement de rentrer
00:27:53 :des valeurs etc. Donc là par exemple je rentre 25. Ah ici vous voyez ça c'est un petit détail,là quand je rentre, chacun son truc hein Gabriel, on n'est pas ici pour juger. Vous voyez ici dans
00:28:16 :ma base de données j'ai un truc pas très sympa, mesure object 2 1, c'est pas très lisible et ducoup en fait pour ça on peut définir une méthode spéciale de Python qui est le str pour string enfait et c'est ici vous pouvez définir une méthode spéciale qui va vous permettre d'afficher, c'est
00:28:41 :un peu vous savez tout à l'heure quand j'ai fait ma classe rectangle, elle est ici, donc là c'estune classe, c'est purement la programmation orientée objet, j'ai fait une classe, ici j'aidéfini une méthode spéciale qui me permettait en fait d'afficher de manière plus sympathique moninstance. En fait si j'avais pas fait ça, vous voyez ici si je mets pas cette méthode spéciale
00:29:18 :qui me permet d'afficher de manière sympa mon instance, j'ai ce type d'écriture barbare quisont en fait des espaces mémoire alloués à mon objet, donc c'est vraiment pas lisible. C'est
00:29:29 :pour ça en fait qu'on met ce genre de méthode spéciale. Donc si je retourne ici et que jem'en fais une petite là, en str, en fait moi ce que je vais faire, je vais faire un retourne,c'est la mesure, je vais mettre valeur, ici je vais mettre self.mesureVal, et le, je vais mettre
00:30:01 :en fait ici la date. Je sais pas si j'ai besoin de refaire un makeMigration, je suis pas sûr.Ouais non c'est bon. Vous voyez un peu ça a un peu changé le format, donc là il met le numéro de
00:30:23 :ma valeur, comme ça dès que je vais voir, je peux avoir un accès direct à mes datas sans essayer decomprendre ce que c'est. Donc ça c'est un peu le truc classique Django, peut-être qu'on peut
00:30:37 :faire aussi, donc là vous voyez pour l'instant j'ai pas, j'ai juste mon interface admin, j'aiaucune interface pour aller visiter, je peux pas du tout aller visiter mes valeurs, je suis obligéde passer par l'interface admin etc. et ça c'est pas, c'est pas envisageable en fait, on peut pas
00:31:01 :dire que tous les utilisateurs de notre application, ils ont un mot de passe admin et puis ils rentrentdans l'interface admin etc. Par exemple comme vous le savez, docstring, Thibaut l'a développé en
00:31:12 :Django, donc vous quand vous y accédez via un URL, vous voyez le template que Thibaut veut bienservir. En revanche, Thibaut il donne pas un accès administrateur à tout le monde pour que
00:31:26 :on aille voir à l'intérieur les données etc. c'est pas envisageable. Donc en fait ce qu'on faittypiquement, donc d'abord il va falloir définir un URL, donc moi souvent ce que je fais, je prendscelui qui est de base, copier, ok, ici inclue, j'écris après je vous lis, donc là on va dire,
00:32:07 :en fait ce qu'on fait là c'est que dans les URLs généraux, on va dire tout ce qui commence parmesure, tu vas me, c'est inutile, tu as fait un nouveau fil URL ou tu as pris celui du projet?
00:32:30 :Ouais j'ai pris celui du projet. Après c'est exactement le même, tu vois j'ai peut-être pasbesoin du contrib et machin, mais comme ça je me fais pas chier à redéfinir l'URL et le patternetc. Donc là c'est bon, c'est clair pour toi Gabriel? Oui oui c'est moi, tu as un include pour
00:32:52 :diriger tout ça. Du coup, attendez j'ai fait une bêtise par contre, ce que je fais là ici,c'est à mettre dans les URLs globaux. Et donc là en fait je dis tout ce qui va commencer par
00:33:16 :mesure dans mes URLs, tu m'envoies vers les URLs de mon application mesure. Et les URLs de monapplication mesure, donc là par exemple on va dire qu'on va accéder à toutes les mesures,et là on va, du coup il va falloir qu'on crée une vue qui permet d'accéder à toutes les
00:33:42 :datas. Donc là on l'a pas encore créé, mais je vais la créer. Donc ça va être view, import,je vais dire, je vais la créer, view, vue mesure. Ok donc maintenant il va falloir que je définisse
00:34:17 :ma vue. Tout ça c'est vraiment purement Django, donc je vais vite et puis c'est pas grave si vouscomprenez pas. Donc là je vais faire, je définis, c'était quoi que je lui ai mis, view mesure,
00:34:32 :view mesure, ok, là il faut que je prenne ma request, et retourne, et là il va falloir que je lui mette index.html.Donc ça en gros c'est le fichier html que je vais rendre, que je dois mettre ici, donc ça c'estpareil c'est de la, ok, et dans template je dois en créer un nouveau, mesure, vous vous en faites pas
00:35:15 :pour ça, ne soyez pas trop perturbés, index.html, ok, et ici, donc là normalement, typiquement,je suis juste en train de vous montrer ce qu'on fait typiquement dans une application Django etaprès je vous montre comment on fait pour le faire avec une API et pourquoi on le ferait avec
00:35:35 :une API. Ici on va importer notre modèle mesure, donc en gros ici c'est comme si j'importais toutela table de ma base de données qui correspond aux mesures, donc from model import mesure, et iciquand je vais aller visiter cette URL là, en fait cette URL, cette fonction là elle est liée à l'URL
00:36:00 :que j'ai défini ici, en fait quand je vais aller vers cette URL là, il va m'appeler cette vue,et cette vue elle fait quoi, et bien elle interroge ma base de données, elle va chercher toutes lesvaleurs. Donc mesure égal mesure.objects.all, ça c'est juste pour aller récupérer toutes les
00:36:18 :lignes qui sont dans ma base de données, ok, et moi je mets toujours, dans mes étimaux il faitaussi pareil, je mets tout dans un dictionnaire, donc on va dire mes mesures, en fait ça, cetteclé là dans le dictionnaire, c'est ce qui vous permet dans votre template d'accéder à toutes
00:36:39 :vos valeurs. Mesure égal mesure, ok, et là je lui passe, je crois que je dois lui donner la requestd'abord, et après c'est le contexte. Non Jonathan, en fait, HTML, pour le faire fonctionner, oui
00:37:08 :forcément il faut que tu connaisses un petit peu le HTML, mais c'est pas, en fait tu vas voir, jevais te montrer ce dont tu as besoin de savoir sur le HTML, c'est pas énorme. Ok, donc là
00:37:23 :normalement c'est bon, j'ai un doute si le, Gabriel peut-être dans ce moment, le request ilfaut bien le donner avant le contexte. Le request, moi je le mets juste après le render, vraiment,
00:37:33 :c'est le premier paramètre, le premier argument que je mets. Ok, ok, donc là c'est bon, merci.Donc là ça veut dire que si je veux aller, donc là je vais juste au moins tester, ça fonctionne bien.
00:37:45 :Ok, donc maintenant on va voir si tout fonctionne bien. Donc j'ai défini un URL, donc j'ai dittout ce qui commence par, c'était quoi, tout ce qui commence par mesure, je vais voir ici dansl'URL global, mesure access, merci, mesure access, alors qu'est-ce qu'il dit?
00:38:26 :J'ai un problème dans mon template.Pourtant j'ai bien activé.Il n'y a peut-être pas de, si il y a un, je me fais souvent avoir avec ça.
00:39:26 :Qu'est-ce qu'il veut, qu'est-ce qu'il n'aime pas?C'est bien, c'est une template avec un S normalement.Donc dans mon URL, je vais voir, access, view, mesure, request, qu'est-ce que j'ai foutu?
00:40:05 :Attendez, je vais voir dans un, désolé, excusez-moi pour ça.Ah pardon, tu m'as dit on peut laisser regarder.Ouais le request, on te le met en premier, parce que moi j'ai fait tout ce que tu as fait,ça fonctionne, alors je ne sais pas, c'est peut-être ça alors.
00:40:55 :Non mais oui c'est ça.Ok, donc là je reviens là-dessus, donc là vous voyez ici, merci, donc là c'est bienle template que j'ai créé, donc là bon c'est pas très intéressant, c'est justehello, moi ce que je voudrais c'est faire apparaître dynamiquement mes mesures, donclà j'y retourne, et donc là ce qu'on va dire, on va utiliser le template, ça c'est
00:41:25 :pour injecter un peu de logique Python dans le HTML.Donc on va dire for mesure in mesure, ok, import, et puis qu'est-ce qu'on va dire,on va mettre un ul, là tu vois Jonathan pour répondre à ta question, ouais mercij'avais pas vu, ok, manage, oui oui request c'est bien le premier argument, je ne m'entendais
00:42:03 :pas.Donc là tu vois Jonathan pour répondre à ta question, tu vois c'est du HTML maisbon c'est pas grand chose, je mets un titre, ici c'est pour mettre une classe, et làpour mettre des listes, et là je mets mesures.
00:42:20 :Donc moi franchement HTML je connais pas, je fais pas des trucs très avancés, je faisjuste ce dont j'ai besoin, mais après ça dépend comment tu te positionnes.
00:42:29 :Si tu veux être plus tard full stack, c'est-à-dire faire du backend et du frontend, tu peux paspasser à côté du HTML.Par contre si tu veux juste faire du backend, c'est pareil tu peux pas passer à côtédu HTML, mais tu peux vraiment apprendre les bases, juste un peu présenter, structurer
00:42:46 :ta page HTML, mais tu vas pas aller, si tu t'orientes pas du tout vers le frontend, t'aspas besoin d'avoir une connaissance énorme du HTML, mais forcément t'es un peu obligéd'y passer rien que pour écrire des petits templates.
00:42:59 :Ok, donc là j'ai oublié, donc là vous vous en faites pas pour ça, pareil vous pourrezvoir dans la formation, ici le but c'est pas de voir les trucs de la formation dansle détail.
00:43:14 :Donc là, si on s'arrêtait là, on peut dire qu'on a une application Django qui est fonctionnelle,donc vous voyez ici, je vais aller ajouter, si je retourne, je fais mesure et je rajoutele viable, ici vous voyez j'ai une nouvelle valeur, si ici j'actualise, donc là vousvoyez que mon template il répond bien etc, c'est un peu, c'est cool, on est content.
00:43:47 :Par contre, ça, la page HTML, c'est pas, vous voyez en fait, moi je suis un utilisateur,je vais sur, je tape cette URL là etc, et j'ai une page HTML, un rendu, un truc visibleet compréhensible par un humain.
00:44:03 :La boucle forte entre acolades, non c'est pas du javascript, si je me trompe pas, ças'appelle Jinja, et en fait c'est ce qui permet justement d'injecter de la logiquedans le fichier HTML.
00:44:23 :Après donc tu vois ici, mon fichier HTML il est comme ça, mais si je regarde mon fichierHTML, tu vois en fait je retrouve pas, tu vois ici j'ai écrit une boucle forte etcavec les doubles acolades, moi ici je retrouve vraiment du pur HTML et c'est le rendu de
00:44:42 :ça.Donc ça c'est pour faire des boucles à l'intérieur de tes fichiers HTML, mais c'estpropre, je crois pas que ce soit du javascript, c'est un langage propre, Jinja, qui permetde faire du template.
00:44:54 :Donc en gros ça se passe comme ça, quand tu veux mettre de la logique, tu mets unedouble acolade quand c'est une variable, et tu mets une acolade pourcentage quand tuveux mettre de la logique.
00:45:05 :Donc là tu vois ma logique c'était fort, donc c'est tout en acolade pourcentage.Donc maintenant si je reviens à ce que je disais, donc là on est content, on a notreapplication, mais moi ce que j'aimerais c'est pouvoir récupérer automatiquement toutesles valeurs.
00:45:22 :Vous voyez j'ai pas envie d'aller devoir extraire dans la page HTML la valeur ici,25, 56, etc. parce qu'ici, bon j'aurais pu, là je mets.measuresval, là vous voyez j'ai
00:45:42 :mes valeurs, mais moi j'ai pas envie de devoir aller les chercher à la main, etc.Donc moi ce que je veux faire c'est une interface, je veux être capable d'avoir un script quivient interroger ma base de données, qui me sort directement toutes ces valeurs làsans me les faire passer par un fichier HTML, qui est en gros le seul moyen pour l'instant
00:46:00 :à mon application de communiquer avec un utilisateur.Donc pour ça ce qu'on fait, on va développer une API.Donc pour faire une API, moi je fais toujours, tout le monde ne fait pas comme ça, maismoi j'aime bien séparer les deux, je crée une nouvelle application qui sera pas vraiment
00:46:17 :une application comme au même titre que mesure, mais ce sera mon application API.Donc je fais plutôt manage start app, là je fais API, ok.
00:46:33 :Donc là il m'a créé une API, donc là cette fois-ci je vais pas faire comme tout à l'heure,je vais la rajouter directement dans mes settings.
00:46:44 :Je vais avoir besoin de Django REST framework, mais je l'ai déjà installé, moi vous voyezsi je fais pip list, il est là.Donc ici je l'ajoute.
00:46:56 :C'est quoi le pip install Django REST framework?Ouais c'est ça, c'est pip install Django REST, c'est tout accroché comme ça.Ouais, tu verras souvent des RF pour, en rond comme ça, des RF pour dire Django RESTframework, quand les gens ils en parlent.
00:47:23 :Donc j'ai mon API, machin, ensuite je rajoute aussi mes URL d'API là-dedans.Donc tout ce qui va commencer par API, ça va concerner mon API.
00:47:36 :Donc là du coup ça va être include API URS, ok.Maintenant je vais pouvoir m'occuper de mon API.Donc l'API ici, le premier truc à faire c'est de créer ce qu'on appelle un serializer.
00:47:58 :Ok, je vérifie si je m'occupe bien.Ouais, on met un S.Ça n'a pas trop d'importance, mais par convention on l'appelle un serializer.Ok, donc en fait un serializer c'est ce qui va permettre de, en gros, vraiment en gros,ça transforme mon objet, donc là ça va être mon objet de mesure, en un fichier JSON.
00:48:32 :JSON, comme vous l'avez déjà vu, pour les fichiers de configuration, etc.Donc c'est lui en fait qui va faire, parce que le JSON c'est un peu la convention pourles langages d'API.
00:48:44 :C'est comme ça qu'on récupère de la donnée et c'est comme ça qu'on passe de la donnéeaussi dans les requêtes.Donc je vais aller directement le chercher dans ce que j'avais déjà fait, serializer,et on va l'expliquer.
00:48:58 :Donc là j'utilise REST Framework, les serializers de REST Framework, et ici je vais juste chercherdans le modèle que j'ai déjà créé, dans mon format de données, ma classe mesure,et je vais, entre guillemets, ici, vous n'en faites pas pour ça, si jamais vous, moi parexemple, vous voyez je l'ai collé, je ne le connais pas par cœur, à chaque fois
00:49:22 :je vais le rechercher.Et en fait là, ce que je lui dis juste, c'est, serialise-moi mon modèle, c'est-à-dire transforme-moimon modèle en JSON.Donc c'est tout simple.
00:49:33 :Et ensuite, on doit créer une vue, mais avant ça il faut créer, bien sûr, un URLqui correspond.Donc pour faire ça, on va faire comme tout à l'heure, je vais prendre lui qui existedéjà.
00:49:49 :Et ici, donc ça commence déjà par API, je vais lui dire, c'est plus du accès simple,en fait c'est API accès.Là, je vais lui dire, on use, donc là c'est ce que je vais aller chercher, c'est monserialiseur en fait.
00:50:20 :Non, c'est ma vue, pardon.Donc c'est ma vue serialisée.Donc si par exemple, attendez, je vais vérifier mes URLs.Ouais, c'est juste la vue.Je vais lui dire, get data, là c'est vraiment obtenir les données via l'API.
00:50:55 :Donc là j'ai fait ça et maintenant je vais créer ma vue.Et donc ici, je vais aller récupérer ma vue comme j'ai fait.Je vais la reprendre directement ici.
00:51:09 :Je vais vous expliquer.Donc en gros, ici, je vais chercher dans mon serialiseur que j'ai créé dans mon fichier,ma mesure en gros serialisée.Je ne sais pas si c'est très français, mais c'est pas grave.
00:51:26 :Et ici, c'est juste, donc en gros, API View, c'est un décorateur qui vous permet de direque votre méthode, elle ne peut être accédée que par du gate.
00:51:35 :Parce qu'en fait, quand vous faites des API, vous avez soit des méthodes get ou des méthodespost.Get, c'est pour accéder, c'est pour récupérer.Et des méthodes post, c'est pour envoyer de la donnée au serveur.
00:51:46 :Donc c'est pareil, quand vous faites du Django, vous avez du get et vous avez du post.Donc là, c'est juste pour lui dire, attention, ma vue, elle est uniquement get.
00:51:53 :Et donc là, c'est un peu comme tout à l'heure, on va récupérer tous les objets.Donc là, c'est comme ce qu'on faisait avec Django.Par contre, tu me les serialises.
00:52:03 :Donc c'est à dire, vous voyez, c'est vraiment pareil que si je veux, si je montrais en vuesplittée ici, la vue.La vue classique, entre guillemets.
00:52:15 :Donc là, je mets côte à côte mes deux vues.Donc ça, c'est ma vue classique Django.Donc vous voyez, je vais chercher tous mes objets.
00:52:33 :Je les mets dans un contexte et je les balance dans un HTML.Et en fait, ici, au lieu de les balancer dans un HTML, je les transforme en Json et je lesbalance dans le résultat de ma requête.
00:52:43 :Donc vous voyez, en fait, il y a juste une petite entre guillemets surcouche qu'on metpar dessus.C'est le serialiser.Donc maintenant, on a ça.
00:52:52 :Est-ce qu'on a tout?Donc là, j'ai mon URL.Donc là, normalement, j'ai tout.Donc maintenant, si je relance le compte manage server, j'y retourne.Et donc là, maintenant, je ne vais pas faire API, mais je vais faire, comment je l'ai appelé?
00:53:12 :API access.Voilà.Donc là, vous voyez, au lieu de me servir ici avec mon template qui n'est pas trèsbeau, que j'ai créé moi-même avec mes petites mains.
00:53:31 :C'est vraiment du brut HTML.Mais moi, je vous dis, je ne développe jamais de fontes.J'ai des API, j'en développe quelques-unes.Et en fait, vous voyez ici, on a le template, le CSS de REST Framework.
00:53:48 :Donc c'est assez intéressant.Vous voyez ici, par exemple, moi, je suis connecté en tant qu'admin.Donc il me met un petit admin, etc.Donc c'est quand même assez sympa.
00:53:57 :Mais là, vous vous dites, bah, en fait, c'est un peu pareil que tout à l'heure.Je vous ai dit, bah là, je suis dans du HTML.
00:54:07 :Oui, certes, mais ça, vous voyez que c'est un format JSON.Et vous pouvez même dire, vous pouvez changer le format, en fait.Et vous voyez, tout ça, moi, je n'ai pas du tout développé toute l'interface CSS,etc.
00:54:19 :Elle a été faite pour moi.Donc là, si je fais API ou en mode JSON, donc là, vous voyez, j'ai déjà un JSON.Donc là, on est déjà un peu mieux.
00:54:29 :Et vraiment, le vrai intérêt des API, c'est les requêtes.Donc là, en fait, j'utilise Postman.Je ne sais pas si vous connaissez.C'est en fait un logiciel qui permet de créer des requêtes facilementen ajoutant des headers ou mettre des choses dans le corps de votre requête.
00:54:52 :Et c'est très bien, c'est bien produit comme logiciel.En fait, il suffit de dire, donc là, en ce moment, j'ai un serveur qui tourne sur cette adresse URL ici.
00:55:04 :API, donc là, ce n'est pas mesure.J'ai dit, c'était API access.Voilà.Et donc, si je fais ici, j'envoie ma requête.OK, j'envoie.Donc là, vous voyez, il me sort mon résultat en JSON.
00:55:24 :Donc, c'est quand même vachement pratique.Et ce qui est encore plus cool dans Postman, c'est que si vous faites afficher le code source de la requête,il vous met ici, en gros, la requête que lui, il a tapé.
00:55:32 :Donc ici, maintenant, imaginez que je ne suis pas dans un navigateur, je ne suis dans rien du tout,mais j'ai un script qui tourne en fond.
00:55:41 :Eh bien, je peux taper ce script-là pour faire ma requête.Donc ici, si je lance un terminal, OK.OK, donc là, vous voyez, c'est juste une porte request.
00:56:12 :Donc là, mon URL, moi, je n'ai rien inventé.Mais en gros, si je vais voir dans, c'est le Postman, quand moi, je lui ai dit, fais-moi la requête,il m'a créé lui-même la requête ici.
00:56:24 :Il m'a dit, en fait, si tu veux ce résultat-là, il faut que tu fasses cette requête-là.OK, donc si je retourne voir là-dedans, donc une porte request,donc ça, c'est un module de Python qui permet de faire des requêtes URL.
00:56:36 :Là, je lui définis l'URL de là autour de mon application, donc là, en l'occurrence, mon API.Ça, c'est pour mettre des headers, etc.Donc si jamais vous voulez faire de l'authentification, etc.
00:56:46 :Ouais, Postman, c'est un soft, c'est un logiciel.Ça, c'est téléchargé gratuitement.Et ça, je lui dis, ça, c'est ma réponse.Maintenant, si je fais, OK, 200, et si je fais, attendez, c'était quoi?
00:57:21 :En gros...On va le refaire.Mais en gros, vous vous rendez bien compte que ça, ce script-là,c'est quelque chose que vous pouvez taper n'importe où dans n'importe quel script.
00:58:11 :Et donc là, l'intérêt, c'est que quand vous faites ça, vous récupérez directement vos datas.Donc là, j'aimerais bien quand même que mon exemple fonctionne.On va le taper d'ici. Import requests. OK.
00:58:32 :URL de mon API.Et maintenant, si je fais un request.request, qu'est-ce qu'il me sert?Tout ça.Voilà. Donc, vous voyez ici, je récupère ça.Donc, attendez, il ne me reste pas grand-chose pour obtenir le JSON.
00:59:21 :Voilà. Donc, en fait, je récupère directement via ma ligne de commande.Donc, une interface, vous ne voyez peut-être pas très bien.Mais en gros, ce que vous voyez ici, c'est une liste.
00:59:41 :Après, je peux manipuler ça. Au lieu de faire ce que j'ai fait ici, je peux juste dire,ça c'est ma liste.Et donc là, maintenant, j'ai accès à mes données facilement, autrement que par un fichier HTML.
01:00:00 :Donc, ça peut servir. Ouais, pas de souci, bonne soirée. Le web service, c'est ça du coup.Postman, c'est un soft. Qu'est-ce que tu veux dire, Gabriel, par ça?
01:00:13 :J'ai entendu le terme web service. Je ne sais pas si c'est le fait de passer par des APIs, du coup,si c'est la même chose ou pas.
01:00:22 :Honnêtement, peut-être. Mais je ne sais pas si c'est un terme officiel.Comme moi, je ne connais pas.Mais je ne sais pas si j'ai réussi à vous faire passer le message de l'intérêt de l'APIpar rapport à l'application web qui sert justement l'avantage d'y faire.
01:00:45 :Déjà, en fait, le scrapping, c'est pas...Moi, je suis toujours un petit peu frileux à faire du scrapping.Ça dépend de ce que tu fais avec la donnée, mais pour moi, ce n'est pas 100 % légal.
01:01:01 :Ensuite, là, j'ai juste montré un tout petit peu, mais avec les APIs, tu peux gérer les authentifications.Là, tu vois que quand je fais ma requête, je n'ai pas d'autorisation.
01:01:15 :Mais en fait, tu peux aussi dire, j'ai un token dans ma requête.C'est-à-dire que c'est un espèce de mot de passe scripté que tu mets dans ta requête,sans lequel tu ne peux pas accéder à la réponse.
01:01:33 :En fait, le développeur qui développe son API, il peut dire,moi, je ne veux pas que les requêtes sans token soient acceptées.Et en fait, chaque token est propre à chaque utilisateur.
01:01:46 :C'est l'administrateur ou sinon tu crées justement un URL qui te permet de générer des tokens par utilisateur.Mais en gros, sans cet espèce de mot de passe, tu ne peux pas accéder aux données.
01:01:58 :Donc l'API, elle peut te permettre justement de protéger ta base de donnéesen autorisant uniquement les gens qui ont le token pour faire la requête,ce que tu ne peux pas faire avec du web scrapping.
01:02:10 :En fait, toi, ce que tu dis, et je comprends ce que tu veux dire,moi, je l'aurais déjà fait aussi, mais là, quand on est là, on peut se dire,si j'affiche le code source, on peut aller faire du scrappinget aller chercher tout ce qui se passe dans les balises LI.
01:02:26 :Mais ce n'est pas...Donc tu vois déjà là, ce n'est pas du tout...Imagine un jour, le développeur front, il change, il dit,ce ne sont plus des LI, c'est des... je ne sais pas...
01:02:44 :Il met tout dans des tables, dans des TR et machin.Tu te fais avoir parce qu'en fait, dans ton web scrapping,ce ne sont plus des LI que tu dois aller chercher, c'est des tables.
01:02:53 :Alors que si tu avais une API, l'API, elle attaque directement la base de données.Donc tu n'as pas ce problème de gestion de front, etc.
01:03:02 :Pour moi, le web scrapping, il faut vraiment le voir comme...En fait, des fois, tu n'as pas le choix.Des fois, tu as des sites web qui ne proposent pas d'API.
01:03:12 :Mais tu vois, par exemple, tout ce qui est données Météo France, etc.,ils proposent une API et ils ont développé...En fait, c'est comme ça, c'est ce qu'ils ont fait.
01:03:21 :Eux, ils ont développé une API et comme ça, tu peux venir attaquer,entre guillemets, attaquer, interroger leur base de données via l'API,via des requêtes structurées.
01:03:32 :Tu ne peux pas faire n'importe quoi, tu ne peux pas demander ce que tu veux.C'est à ça aussi que sert le Serializer.Tu sais, quand on a transformé la data en données JSON,le Serializer permet de formater un peu et d'empaqueter un peudans un format spécifique tes données.
01:03:54 :Voilà. Au fur et à mesure que j'explique...Merci, Ludovic, pour ton retour. Je t'en prie.Je me rends compte que c'était peut-être un petit peu compliqué,vraiment compliqué pour certains.
01:04:12 :Je regarde un peu dans les questions.Le manage.py fait partie de la bibliJango.Ce n'est pas vraiment que ça fait partie de la bibliJango,mais quand tu crées une application,quand tu crées... Tu sais, ici, François, quand j'ai fait...
01:04:28 :D'abord, quand j'ai fait pip install Django, il m'a installé Django.Et quand j'ai fait Django admin start project,il m'a créé le manage.py.C'est un truc qu'il a créé lui-même.
01:04:46 :En fait, le manage.py, on peut aller le voir,c'est juste un script comme les autres.C'est lui qui gère le lancement du serveur de développement.
01:04:57 :C'est lui qui te permet de faire toutes les commandes,de créer le super utilisateur, etc.Ah, OK.Voilà. Si vous avez des questions là-dessus,n'hésitez pas à me dire si c'était trop avancé,si vous étiez trop perdu,si vous pensez que ce n'était pas adapté pour cette session.
01:05:31 :Dites-le nous aussi, comme ça, ça nous permet de jauger un peu.Merci, Gabriel.Et puis...Ah, d'accord, Jonathan.Tu as un exemple d'une grosse application que tu as déjà faite avec un API comme ça.
01:05:49 :Quel type d'application, par exemple, tu as déjà fait ça avec REST Framework?C'est un peu pour ça que j'avais pris l'exemple de Meux.C'est un peu pour ça que j'avais pris l'exemple de Meux.
01:06:02 :C'est un peu pour ça que j'avais pris l'exemple de Meux.J'avais développé une API de suivi de données médicalespour des patients, par exemple, qui souffrent d'hypertension,des choses comme ça, qui ont besoin de récupérer leurs valeurs tous les jours.
01:06:24 :Enfin, pas tous les jours, mais assez régulièrement pour pouvoir la contrôler.En fait, du coup, j'avais créé l'application Django, un peu comme j'ai montré,où en fait, il y avait plus de choses,la pression diastolique, systolique, etc., qui sont les mesures d'hypertension.
01:06:41 :Donc ça, c'était vraiment l'application Django.Et après, j'ai créé une interface Streamlit, comme j'avais déjà montré le framework.Et en fait, comme ça, ça faisait une belle interface web.
01:06:53 :Et du coup, il y avait une API par-dessus l'application Django des mesures.Et comme ça, en fait, moi, je faisais mes requêtes avec l'application Streamlit.
01:07:03 :Et j'interrogeais justement la base de données,où en fait, tu connaissais les mesures.Et en fait, l'API, elle faisait aussi les statistiques, etc.Ça permettait de sortir un output, de dire, par exemple,voilà, je te sors un rapport PDF avec les statistiques,avec des graphiques, des évolutions, etc.
01:07:26 :Et après, on pourrait même imaginer faire un peu du machine learningsur la prévision, des trucs comme ça.OK, merci. Je suis prêt à faire tout ça.
01:07:37 :Si, si, tu es bien parti pour.J'espère.Alors, API et Webhook.Webhook, je t'avoue que je ne connais pas.Ah, c'est un peu genre Zapier Webhook.
01:08:02 :Je suis en train de regarder. Ce n'est pas tout à fait la même chose, je pense.Parce que là, l'API, c'est vraiment quelque chose, pour moi, comme je le vois,c'est quelque chose qui vient interroger des bases de données, interagir avec.
01:08:13 :Là, Webhook, c'est plutôt un truc que tu viens brancher par-dessuspour améliorer un peu le comportement d'un site.Donc, c'est vraiment quelque chose qui vient interroger des bases de données,interagir avec.
01:08:24 :Là, Webhook, c'est plutôt un truc que tu viens brancher par-dessuspour améliorer un peu le comportement d'un site.Là, Webhook, c'est plutôt un truc que tu viens brancher par-dessuspour améliorer un peu le comportement d'un site Web.
01:08:35 :Ah ouais, bah, désolé Aurélien.Pas de souci, bonne soirée Jonathan.Voilà, je ne sais pas d'autres si vous avez des questions,sinon...des questions, des ressentis.
01:09:06 :Si jamais vous ne sentez pas de dire là en direct votre sentiment,n'hésitez pas sur la communauté, dans les messages, à dire,le mentorat, entre guillemets, débutant, c'était trop compliqué,on était trop perdus, etc.
01:09:20 :Franchement, n'hésitez pas.Ça nous permet de mieux organiser les sessions pour que ça soit bienpour tout le monde.Là, je vois quelques commentaires où les gens disent« je ne connais pas Django, du coup, j'étais un peu perdu. »
01:09:35 :Voilà.S'il n'y a pas de...Une micro question.Vas-y.En une toute petite.Quant à ce que je... Dans Django, j'ai attaqué les vues par les classes.
01:09:54 :Ouais.Les classes pour les vues.Mais du coup, de manière générale, quand tu as un attribut de classe,un attribut de classe, tu peux le modifier du coupdans une méthode de classe, c'est ça?
01:10:10 :Tu vois, dans Django, on voit un passage comme ça.Au pire, je l'ai posé en question, donc je vais attendre...Il me semble que j'ai vu passer.
01:10:19 :Pour l'instant, celle-là, je l'avais laissée de côté.Elle était un petit peu complexe.Je vais voir avec Thibaut s'il l'a vue aussi.Parce qu'en fait, tu sais, des fois, quand tu poses des questionscomme ça par rapport à une session,comme c'est Thibaut qui les a faites, il faut que je me replonge dedans.
01:10:41 :C'est pour ça que ça prend un peu plus de temps.Il faut qu'on regarde...Il ne s'en rend pas de problème.Du coup, François, tu n'as pas tout compris comment je récupère les mesures.
01:10:55 :Dans l'API ou dans l'application Django classique?En fait, la clé, que ce soit dans l'API ou dans l'application,c'est cette petite ligne de code qui récupère...
01:11:16 :En gros, ici, ça représente ta table.Ça, ça représente toutes les lignes de ta table.Enfin, plutôt, Objects All.Donc là, c'est ta table.Là, c'est tes objets de ta table.
01:11:27 :Et là, c'est tous les objets.Après, on pourrait dire Filter.On dit Filter, et puis tu veux juste quelques objets.Ceux qui sont plus petits ou égales à 20.
01:11:38 :En bref, je n'en sais rien.Mais en gros, c'est cette ligne-là qui permet de récupérer toutes les mesures.C'est dans la vue.Bon, ben voilà.
01:12:03 :Je ne sais pas si vous avez d'autres questions.Sinon, on va fermer le...Ah, d'accord.Désolé, François.Si ça a été un peu vite.Après, j'essaie de montrer un maximum de trucs.
01:12:19 :Voilà, pour la session.Mais je comprends que tu dis que ça a été vite.Merci, Ludovic.Bonne soirée.Bonne soirée.Bonne soirée, Gabriel.Du coup, je vais regarder avec Thibaut.
Aucune occurrence trouvée pour « ».
00:47:52
Serializers
00:50:58
vue