Session du 11 janvier 2024 à 20h00
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
Projet de forum Python et APIs
-
Présentation du projet de système de gestion de forums de Gabriel.
-
Utilisation d'API (mise en pratique avec un CRM dolibarr)
-
Si nous avons le temps: passage en revue de la création d'API avec Django et le DRF (Django Rest Framework).
00:00:00 :On peut faire des scripts Python avec des arguments donc ça me permetfacilement justement quand je veux aller voir dans le back-end par exemple enmettant une adresse email, ça m'ouvre tout ce qu'il faut etc donc tout ça avecdu Python là aussi. C'est cool et c'est uniquement donc c'est macOS mais
00:00:21 :n'importe quel client messagerie ? En fait c'est, attends je vais t'envoyerle lien. En fait c'est vrai que je ne sais pas sur Linux, je ne me
00:00:35 :souviens plus s'il y a un truc similaire, je dis similaire par rapport à Spotlightpour ceux qui sont sur Mac, c'est une barre de recherche en fait c'est un peucomme le menu démarrer on pourrait dire sur Windows. Toi tu dois avoir, ouais j'étais
00:00:53 :sur Mac aussi, PA. Et ça permet de faire plein de trucs, principalement lancer desapplications, chercher des fichiers et tout ça mais ils ont un système descript aussi qui est assez pratique et donc ça fonctionne sur des scriptsPython. Je crois pas qu'il y ait d'autres langages, il me semble que c'est
00:01:15 :principalement en Python donc on peut faire ses propres scripts et donc moi jem'en sers pour, je m'en sers pour mon chauffage qui est derrière. J'ai fait un
00:01:26 :petit script avec les, j'en avais juste parlé sur Twitter.Oui je l'ai refait là, donc ça me permet avec une prise connectée del'allumer et de l'éteindre régulièrement pour consommer un peu moins et finalementça me fait un genre de système intelligent et du coup c'est un scriptPython et puis je peux le lancer du coup depuis Raycast en mettant des arguments
00:01:46 :pour dire combien de temps je veux qu'il soit allumé, combien de temps qu'il soitéteint. Voilà, voilà comment on s'amuse pendant les fêtes. Donc je vais, ouais ça fait
00:01:56 :déjà, ok ouais 19h, ouais 19h05, ouais moi j'ai une heure de décalage, donc ouaisbienvenue à aussi du coup Florent qui est, du coup toi c'est ta premièrepremière session si je me trompe pas, donc est bienvenue, re-bienvenue à tousles autres qui sont là de façon régulière. C'est ça ouais, bienvenue du
00:02:21 :coup Florent sur Doxtrune vu que ça fait seulement quelques jours, je croisque du coup tu t'es inscrit. Donc je fais juste un petit un petit coucou, une
00:02:28 :petite petite intro et après je laisserai Pierre-André prendre le relais avecnotamment je crois Gab qui va montrer un peu ce qu'il a fait sur son projetforum qui a bien bien bien avancé, qui est presque 100% fonctionnel de ce quej'ai pu voir et bon après c'est comme tous les projets, on peut continuer
00:02:48 :ad vitam aeternam d'ajouter des fonctionnalités, mais là t'as déjà jecrois quelque chose d'assez complet, en tout cas vraiment présentable, donc tuvas pouvoir je pense parler de beaucoup de choses intéressantes pour tout lemonde, que ce soit en termes de conception, de problèmes que tu as puavoir, de discussions qu'on a eues aussi, on en a pas mal parlé dans les
00:03:09 :questions sur Doxtrune, donc comme je dis, je l'ai déjà dit, mais si vous voulezprogresser en piton, vous pouvez aussi aller taper Gabriel dans la barge derecherche pour trouver les questions qu'il pose et les réponses qu'on luiapporte, puisque c'est souvent des questions que moi même je me souviens
00:03:25 :m'être posées quand j'ai appris il y a plusieurs années et donc c'est toujoursdes questions très pertinentes, donc voilà c'est toujours intéressant devoir les questions des autres aussi et les projets des autres. Le projet d'ailleurs
00:03:39 :qui j'ai refait, j'avais oublié de le faire là mais sur le discord si vousallez voir, du coup j'ai fait un salon pour ce projet, c'est là que justementGab a posté une vidéo hier et quelques screenshots aussi de son projet, j'ai misjusqu'à fin février pour ce projet donc n'hésitez pas à vous lancer, on peut vous
00:03:55 :aider à vous lancer aussi si vous avez le syndrome de la page blanche, on en avaitdéjà parlé aux précédentes sessions si vous voulez aller voir. Et voilà, ça fait
00:04:05 :un peu le tour de ce que je voulais dire, les mentorats vont reprendre du couptoutes les semaines de façon régulière et je ne sais pas si aussi Péa ce soir tuferas un peu de Django REST Framework si c'était prévu du coup, si vous avez le temps.
00:04:20 :Ouais j'ai un petit peu changé sur le programme, on peut, je pense que ce sera à la fin sion a le temps, en fait je voulais, avant de parler de Django REST Framework, je saisparmi vous qu'il y en a qui se posent un peu des questions sur à quoi sert une API
00:04:37 :et dans ce cas là je voulais faire vraiment une mise en pratique de comment on utiliseune API notamment avec un CRM que j'utilise pour faire des factures ou des trucs commeça, donc c'est un bon exemple pour l'utilisation des API.
00:04:52 :Ouais c'est effectivement un bon petit visiteur je crois, il est chiant, première fois unmentorat aussi pour lui. Ouais c'est effectivement une bonne chose je pense de commencer par
00:05:07 :ça parce que c'est une question qui revient très souvent et c'est vrai que c'est quelquechose que je vois assez problématique aussi des fois d'aborder directement le côté techniquede faire des API alors qu'on n'a pas encore vraiment compris à quoi ça servait et toutce qui était possible et du coup en fait après quand on part là dedans dans la technique
00:05:27 :alors qu'on n'a pas bien compris les tenants et aboutissants de la théorie qui est derrièredéjà, ça sert un peu comme avec les tests même si les tests il faut quand même commeon dit souvent mettre les mains dans le cambouis pour voir, même si on a compris la théorie
00:05:40 :il faut vraiment se mettre dans le code pour voir à quoi ça peut servir, là encore jepense que Gab tu pourras en reparler. Donc voilà je vous laisse avec Péa du coup pour
00:05:49 :voir tout ça et puis avec le projet de Gabriel. Ok bah merci beaucoup Thibault et on commencepar toi Gabriel tu veux... C'est comme tu veux. Bon si vas-y vas-y. J'arrête le partage.
00:06:08 :Alors attends on va lancer PitchArm. Ouais, tu lances ça pour ceux qui n'ont pas l'habitudedes mentorats, en fait pendant les mentorats on fait des choses qui sont normalement liéesà Python de très près, parfois on fait un peu du devops, c'est un grand mot parcequ'on voit un peu de manière superficielle Docker, Docker Compose etc, mais voilà l'idée
00:06:36 :dans les mentorats c'est d'aller explorer d'autres choses qui sont j'espère intéressantesque ce qu'il y a déjà sur la plateforme, l'idée c'est pas de refaire des choses quisont déjà sur la plateforme docstring, ça ne servirait à rien, parfois on peut refairedes exercices ensemble, faire d'autres manières, mais voilà l'idée c'est d'explorer des choses
00:06:56 :et ce qui est vraiment le mieux c'est que chacun participe comme il veut, poser desquestions, là comme va le faire Gabriel vous pouvez présenter vos projets, c'est vraimentune session très libre et ouverte et faut pas que ça soit un cours académique, fautpas que ça soit chiant pour les gens, faut que vous preniez plaisir à venir et puis
00:07:19 :si jamais vous ne voulez pas venir il n'y a aucun souci, faut pas vous sentir gênéde dire je viens pas ce soir, voilà. Non Christian tu n'as rien raté mis à part les
00:07:32 :vœux de Thibault, je n'oserais pas dire que tu n'as rien raté dans ce cas là, maison n'avait pas encore commencé à parler de tes coûts. Vas-y Gabriel. Du coup en plus
00:07:45 :de ça, c'est vraiment un projet que je voulais faire en 2024, donc l'essai sera fait avant,je compte le lancer vraiment en production. Bon on voit en design je ne suis pas top,
00:07:53 :c'est basique, c'est carré mais basique. Non c'est vrai, c'est propre. Du coup c'estvraiment un forum user, c'est que là l'utilisateur il se crée un compte, en quelques clics ilse crée son propre forum avec son URL et après il peut construire un peu comme ilveut au niveau des catégories et tout. Je suis à créer un forum test, faites pas gaffe
00:08:13 :aux noms bidons, il y a beaucoup de noms bidons, donc les forums déjà créés, voilàil y en a pas mal, celui-là. Ça c'était mon forum de test du coup. Ça se présente
00:08:27 :comme ça, donc catégories, sous-catégories à chaque fois. Et quand on rentre dans lescatégories, on a les sujets, donc on peut épingler, désépingler, celui-là mettaisrapide, je fais l'épingler en haut. Voilà, donc c'est vraiment ceux qui ont connu PHPB,
00:08:45 :c'est assez basique. On a le sujet, on a les discussions, on peut répondre, salut.J'ai pas encore testé le captcha, je sais pas s'il marche, on va voir.
00:08:58 :Et Gabriel, est-ce qu'avant d'aller un petit peu dans le détail des trucs, est-ce quetu peux juste donner, parce que moi personnellement je connaissais pas PHPB, et juste vraimentdonner une idée globale de ce que tu, est-ce que c'est un endroit où les gens se connectentet ils parlent entre eux, ou est-ce que c'est une plateforme qui te construit tes propres
00:09:22 :forums ?Ok, excuse-moi. Donc ouais, c'est vraiment comme PHPB si on veut, c'est vraiment, onva construire notre forum, en fait. C'est, en gros, pour partir du début, je crée un
00:09:38 :forum par exemple.Donc ta plateforme, elle permet aux gens de créer leur propre forum, qui ensuite, ilsinvitent les gens qui veulent, etc.Les gens peuvent ensuite se créer un compte sur le forum, en fait. Faut d'abord se créer
00:09:51 :un compte en fait sur ma plateforme à moi, qui est générale, et après, c'est un peucomme Discord, je crois que Discord c'est comme ça, tu demandes accès à chaque foischaque serveur.
00:10:00 :Oui, oui, c'est ça.Et bien là, ça devrait être pareil en fait. Donc là, je crée un forum bidon, je croisque j'ai appelé le bidon. Je vous montre un peu le principe, le bidon, le logo on s'en
00:10:14 :fout, et vous allez voir dans l'URL, il y a vraiment une URL qui est dédiée au forum.D'accord, et pour créer un forum, il faut que tu aies un compte sur ta plateforme àtoi ?
00:10:25 :C'est ça, parce que si tu n'as pas de compte, ici, si tu as créé un forum, vous me leloguez.D'accord, ok.Il faut aller s'inscrire avant.
00:10:34 :D'accord, ça marche.Une fois que le forum est créé, vous faites ce que vous voulez, vous pouvez le construireaprès en fait, vu l'ensemble construction. Et en fait, d'ici, j'ai fait un système
00:10:51 :où je peux construire vos catégories, sous-catégories, et ainsi de suite. Par exemple, on peut rajouterune catégorie, je n'en sais rien, Blackdesk, on s'en fout, et après on met test1, test2,et c'est ordonné par index. Donc il y a déjà une catégorie 3, ici, je vais la mettre
00:11:18 :en 4, et ensuite index1, index2, il valide, et là, boum, il y a sa catégorie qui estcréée en bas, et si je retourne mon forum, en bas, tu as ta catégorie qui apparaîtdu coup.
00:11:30 :Ok.Voilà.Donc là, dans ton forum Blackdesk, c'est comme si tu avais un forum musique, aprèstu aurais pu créer une catégorie métal, et dans la catégorie métal, tu aurais crééplusieurs types de métal.
00:11:50 :Ouais, là, c'est vraiment forum sur le métal, on va dire, entre guillemets, mais c'est bidon.Après, je fais, bon là, ça n'a rien à voir, j'ai appelé ça loyal, mais c'étaitpour un test. Mais sinon, tu crées vraiment ce que tu veux comme catégorie, après, il
00:12:05 :faut que ça reste dans le thème, ça c'est mieux, mais sous-catégorie. Et puis après,dans chaque catégorie, les gens peuvent poster des sujets, et tu peux répondre ensuiteEt toi, quand tu crées un forum, quand tu retournes sur ta plateforme, la plateformed'accueil qui est la tienne, celle que toi tu héberges, si t'es connecté, tu as accès
00:12:27 :uniquement au forum que toi t'as créé, ou au forum auquel t'as été invité ?Ou t'as demandé à adhérer, tu t'es inscrit dessus. Je crois que mon compte, il y a quasiment
00:12:39 :tous les forums propriétaires, mais si je me connecte avec Patrick. Donc Patrick, iln'est pas administrateur, voir les forums, donc il y a tous les forums, mais je ne saispas s'il a appelé le bidon, il n'est pas dessus encore ce que je viens de créer àl'instant. Donc là, tu vois, il ne peut rien faire, à part de dire non. Il ne peut rien
00:13:00 :faire, il n'est pas dedans, il ne peut rien faire.Ah oui, donc tu fais juste un listing de tous les forums qui existent sur ta plateforme,par contre tu peux accéder uniquement à ceux dont tu es membre.
00:13:16 :Tu peux participer à ceux dont tu es membre, ou juste lire après, aller voir ce qui sefait dans les autres, mais c'est tout. Et pour devenir membre, tu demandes l'accès
00:13:26 :en fait, tu me fais un profil, tu fais un robot et tu t'inscris dessus. Et en fait,ça te crée un compte spécifique pour le forum en question.
00:13:36 :D'accord, ok.Il est membre de celui-là. Au passage, il y a un système d'identification ici.Ok.Le message posté par Galgadot, c'est dedans.Il y a une question de Florent qui demande à quoi ils servent les index.
00:13:54 :Alors les index, en fait, c'est que lui par exemple, il a index 1, lui 2, 3, 4, c'estpour les ordonnées. Dans mon code Django, j'ai ordonné les catégories par index en
00:14:05 :fait. C'est pour ça.D'accord, ok.Voilà, et puis tu accèdes à la liste des membres. Il y a des moteurs de recherche.Tu peux rechercher dans les messages du forum. J'ai mis un blocage si jamais il n'y a pas
00:14:24 :assez de mots pour ça. Hop, tu recherches et dans Speed, tu vois dans les sujets, iln'y a rien mais dans les messages, il y a tout de suite le message là qui a telle date.
00:14:35 :Eli, arrête de crier s'il te plaît !Voilà, et hop.C'est joli, direct.C'est ça. Donc il y a le message privé aussi.Ouais, là tu peux écrire à un membre.
00:14:49 :Tu vois, initié par GabiK117 avec Patrick117.Tu as toujours celui qui est initié en premier et après tu peux avoir plusieurs membres.Mais pour l'instant, j'ai fait en sorte que ce soit qu'avec un seul membre mais techniquementsi on veut, on pourrait en rajouter d'autres là. Mais je n'ai pas encore mis ce qu'il
00:15:06 :faut dans le template pour qu'ils puissent le faire les gens.Donc voilà, et quand tu as la liste des membres par exemple, tu peux, genre avec le test,initier une conversation avec lui.
00:15:21 :Hop.Les notices, je vais les supprimer.Voilà, il fait une petite notice comme ça.Et juste pour revenir vite fait sur le compte, parce que là du coup, lui il est juste l'utilisateurnormal. Mais quand tu es le forum master, tu peux tout gérer. Tu peux épingler, désépingler,
00:15:43 :tu peux modifier le sujet, supprimer les messages de tout le monde, les modifier.Voilà, si je veux, je peux le supprimer.Ok.Tu peux modifier. Alors la modification, du coup, j'ai utilisé des bails de Django.
00:15:55 :Ah oui, je ne peux pas, il faut que je modifie le pub pour celui-là, c'est vrai.Mais tu peux modifier normalement tous les messages.Ok.
00:16:03 :Modifier le sujet.Ouais, tu peux administrer tout ça.Supprimer le sujet. Ce qui était compliqué, c'est que le problème, la catégorie ici, c'est que du coup,
00:16:13 :tu peux sélectionner que ton forum. Donc pour ça, j'ai dû carrément faire une méthode dans mon formulaire,parce que sinon, ça allait chercher toutes les catégories de tous les forums qui existent.
00:16:23 :Voilà.Tu vois, donc il y a ça qui a été intéressant dans le code.T'as fait comment ? T'as fait un filtre entre nous là ?
00:16:29 :Je vais te montrer, ouais. Et puis voilà.Donc j'utilise les requêtes avancées de Django.On peut voir le nombre de membres actifs, désactivés, les sujets, le nombre de messages du forum.
00:16:40 :C'est top. Franchement, félicitations. C'est un beau projet.Ouais. Regarde, un membre qui fait des conneries, hop, désactivé. Il n'est plus actif.Et là, tu connais avec lui, je ne peux pas le montrer, ça ne sert à rien, mais il ne peut plus rien faire.
00:16:57 :Là, il ne peut plus rien faire.Je vais le réactiver, mais tu vois, je peux carrément désactiver le nombre de personnes que je veux.OK.
00:17:04 :Voilà. Et tu m'aimerais au niveau du code, du coup ?Ouais. T'as une question aussi de Christian qui demande si tu peux signaler du contenu indésirable.
00:17:14 :Ah, ça, ça ne serait pas bête. Ouais, ben merci. Du coup, pas forcément, non, pas comme ça, mais...Il faudrait un mail envoyé à l'administrateur. Il y a quelqu'un qui clique sur un message qui...
00:17:29 :Ouais, carrément, un bouton qui me fait... Ouais, carrément, ben merci, j'y avais pas pensé.J'y avais pas pensé. Et du coup, dans la requête, je me demandais pour le formulaire, comment...
00:17:43 :C'était quel formulaire, déjà, si c'était changer la catégorie ? Ah oui.Attends, il y a pas mal de formulaire, du coup, ça doit être le dernier. Voilà. C'est ça.
00:17:53 :En fait, j'ai un topic update, donc c'est pour modifier la catégorie. J'ai surchargé la méta de mon constructeur.Et du coup, le champ, en fait, j'ai modifié le core reset, tout simplement. D'accord, ouais.
00:18:11 :J'ai fait ça, donc il y a pas mal de... Alors ça, c'est sympa, c'est les formulaires que je mets en forme avec CrispyForms.Ouais. Je sais pas si vous avez déjà essayé. J'avais déjà passé, ouais.
00:18:27 :Voilà, donc j'utilise mon CSS, en fait, je le mets dans les paramètres. Il y a du ReCAPTCHA.Mais c'est surtout dans les... Je suis dans les vues, là. Là, il y a les vues et les modèles. Voilà.
00:18:44 :Donc en gros, en fait, c'est un modèle forum. Et il y a les comptes forum à chaque fois.Là, ça va être tous les comptes qui vont être attachés au forum. OK.
00:18:56 :Donc il y a pas mal de propriétés. Tu peux te compter le nombre de messages qu'il y a dans les forums.Enfin, si je parle là-dedans, après, on n'a pas fini, mais il y a énormément de... Il y a les notifications qui sont gérées ici.
00:19:07 :Après, tu vas avoir tout le contenu du forum. Et là, c'est pareil, il y a beaucoup de lignes.Méthode de classe, propriétés. J'ai fait pas mal de choses ici.
00:19:17 :Et ce qui peut être intéressant, c'est tout ce qui requête les requêtes complexes.Et pour donner un ordre d'idées aux autres, t'as mis combien de temps pour faire ce projet ?
00:19:27 :Bah, moi, après, la journée, j'ai pas le temps. Mon boulot, c'est le soir. J'ai mis un mois, à peu près.D'accord. Et tu comptes le mettre en production ?
00:19:37 :Ouais, carrément, ouais.Tu vas le mettre sur Python Anywhere ?Ouais. Ah ouais. Il va être sur Python Anywhere.Ok.Et juste, une fois que Thibault en avait parlé, on m'entendra. Voilà, c'est ça. Les objets Q.
00:19:59 :C'est pour faire tes requêtes, ça ?Ouais. En fait, dès que je fais un moteur de recherche, je le fais avec ça.Genre là, les messages, je vais prendre le personnel, c'est-à-dire qu'ils sont pas personnels.
00:20:10 :Même si c'est privé, donc ils sont pas personnels.Et ça va chercher vraiment dans le cadre des messages ou dans le titre du sujet, en fait.
00:20:20 :Ok.À la fois, ça va chercher dans les deux.Donc ça, c'est super pratique.Pour le moteur de recherche, ouais.Ouais. Et voilà. Après, il y a pas mal de requêtes où je traverse pas mal de relations.
00:20:34 :Notamment pour compter dans deux messages, dans une catégorie, tout ça.Qu'est-ce que j'allais dire ?C'est pas tout le temps.Voilà. Les sujets, je les ai organisés.
00:20:51 :En fait, les sujets, quand tu réponds, ils remontent en haut de la file.Donc, ce que j'ai fait, c'est que j'ai fait un chant d'activity.
00:20:58 :Ouais.C'est un chant d'act.Je l'ai mis où ? Je sais même plus.Last activity, je l'ai mis dans une des...Ça va être là-dedans, les messages.
00:21:10 :Ouais, c'est ça. Ici.Donc, c'est quand t'as un message.Tu regardes un message, en gros.Tu vas chercher sef.topic, last activity.Et boum, tu mets un jour, en fait.
00:21:21 :Ouais, d'accord.Après, tu regardes.Voilà.Après, tu tripes par ça.Ok.Et je me suis fait un système d'activation par email pour les comptes.Par contre, il y avait un package.
00:21:33 :Une fois, j'avais parlé de Django Verify Email.Ouais.Et il y a plusieurs personnes qui m'ont remonté que ça buguait.Et il n'est pas bien genre depuis deux ans, je crois, quasiment.
00:21:43 :Et du coup, j'ai fini par me faire mon propre système de vérification.J'ai fait un package vérification.Voilà.Ok.Donc, en fait, j'utilise un objet Django.
00:21:56 :C'est passeport.open-generator.Je fais ma classe maison.Je crée un token par mon lien.Et ici, j'ai la fonction qu'envoie le mail, en fait.Et dans le mail, tu crées ton lien avec ton domaine, ton UID, ton token.
00:22:19 :Et ensuite, ma vue, elle est où ?Je ne sais plus.Je perds toujours la vue.Dans ta vue, en fait, tu envoies ton email à la fin.
00:22:28 :Et ton utilisateur, tu le réactive à false.Surtout.Et donc ça, ça sert à faire, quand il s'inscrit, il reçoit.Avant qu'il puisse...Enfin, pour qu'il vérifie son adresse email.
00:22:40 :Ouais, c'est ça.Parce que du coup, tu vois, en fait, quand il fait un sign up,il active, il va être à false.D'accord.Et c'est tout.
00:22:48 :Et ça envoie un mail.Je vais tester si ça fonctionne.Et en fait, quand il clique dans le mail, il reçoit un lien qu'il envoie sur cette vue-là.
00:22:54 :Ok.Ah mais super, ouais.C'est un peu ce que je vous avais montré la dernière fois avec Superbase,où on pouvait, dès qu'on s'est inscrit, tu te rappelles, tu recevais un email.
00:23:02 :C'est toi qui avais testé.C'est ça.C'est la même chose.C'est ce qu'ils font.C'est ça.Donc en fait, je dois décoder les informations.Ça me permet de récupérer le PK en décodant les informations.
00:23:13 :Et puis après, hop, j'active le compte.Et puis c'est bon.Ouais, bah super.Comme ça, ça permet de vérifier que ce n'est pas forcément des robots et tout ça.
00:23:21 :Ouais, et puis le package était pratique.Mais là, finalement, ça m'a appris à faire moi-même mon propre système.En fait, tu vois, il y a une classe, une fonction.
00:23:31 :Et puis après, tu n'auras aucune vue, quoi.C'est tout.Ouais, mais après, c'est le process, quoi.Ouais, c'est galéré.La mise en place, ouais.Ouais.
00:23:40 :Trois tutos différents.Ils ne faisaient pas pareil.Et eux, c'était organisé avec des vues sur les classes.Du coup, j'ai fait avec un peu de logique.
00:23:47 :J'ai refait vraiment maison avec mes trucs à moi.Bah, bravo.Bon, voilà.En gros, c'était une vue d'ensemble.Mais voilà, en gros.C'est cool, ça.
00:23:58 :Avec ça, si tu ne bosses pas dans l'équipe de Django.Ouais, ça serait cool.Ça serait cool.Bah, voilà.Parfait.Je ne sais pas si d'autres…Bah, merci à toi.
00:24:13 :Ouais, bah, merci à toi.Si vous avez des questions à poser à Gabriel.Ah, il y a quelqu'un qui…Ouais, Ludo.Ah, tu voulais dire moi.
00:24:33 :Merci.Ouais.Bon, bah, bravo.Merci.Merci, Gabriel.Je vais reprendre la main si tu…Ouais, c'est bon, normalement.Ouais, c'est bon.Je vais juste…Je l'ai fait en version Klee aussi.
00:24:50 :En quoi ?Ah oui, d'accord.En CLI.Je l'ai fait en CLI, ouais.J'ai commencé en Klee.C'est-à-dire, les gens, ils faisaient via l'invite de commande ?
00:25:02 :Alors là, c'était juste un forum.Je ne me suis pas fait chier à faire une structure de forum en CLI.Ouais.Mais en gros, je ne sais plus, j'ai fait une vidéo là-dessus.
00:25:11 :En gros, ça…Vraiment, tout en ligne de commande.Ça te charge toutes tes catégories, tes sous-catégories.Je fais un système de base de données avec…Comment ça s'appelle ?
00:25:19 :TinyDB.J'encrypte tous les mots de passe avec Argon2.Ouais.Et en fait, dès que tu vas faire un truc,t'es obligé de te connecter à chaque fois que tu vas faire un truc, en fait.
00:25:31 :Donc, c'est un peu plus lourd.C'est du CLI, mais c'était sympa à faire.Et ça, tu ne l'avais pas montré ?Je ne l'ai pas montré, non.
00:25:42 :Je l'ai retesté tout à l'heure, d'ailleurs, avant de commencer le mentorat,donc je commençais par ça, mais finalement, j'ai fini.Autant monter pour les Django.
00:25:50 :Oui, je suis d'accord.OK.Merci beaucoup, Gabriel, pour ton partage.Non, c'est normal.Alors, ce que je voulais vous montrer maintenant,c'est ce qu'on a dit.
00:26:06 :Peut-être que dans les prochaines sessions,on fera vraiment du Django REST Framework,mais avant tout, pour recommencer sur des bonnes bases,essayons de savoir vraiment à quoi...
00:26:17 :Qu'est-ce que c'est qu'une API ?Parce que Django REST Framework,c'est le langage de Django qui permet de faire des APIsdepuis une application Django.
00:26:29 :Donc, une API, en anglais, c'est Application Programming Interface.C'est un moyen, en fait, de communiquer.C'est des moyens que les applications utilisentpour communiquer entre elles, en gros.
00:26:44 :Parce que, par exemple, si vous avez...Et souvent, il y a des bases de données derrièrequi permettent de faire des méthodes GET, PUT, POST,des choses comme ça, pour soit updater, soit extraire,soit envoyer de la data dans une base de données.
00:27:00 :Et typiquement, vous avez des APIs d'Open Data.Vous voyez, si vous êtes sur goof.fr, vous avez l'Open Data.Vous avez des sites qui ont plein de données.
00:27:17 :Imaginez Météo France, par exemple.Si vous êtes sur Météo France et que vous avez une interface web,vous voulez aller voir la météo qui fait, je ne sais pas,au Danemark la semaine prochaine, vous pouvez...
00:27:29 :Pas forcément sur Météo France, c'est une bêtise,mais sur un site de météo.Mais pour faire ça, vous devez vous baladerdans l'interface utilisateur, sur l'interface web,avec votre souris, vous cliquez, etc.
00:27:41 :Vous allez cliquer sur la ville que vous voulezet vous avez un affichage.Si vous aviez, vous, une application, un site web,par exemple, je ne sais pas, n'importe quel site web,je vois qu'il y a notre ami Florentqui vient des énergies renouvelables comme moi.
00:28:05 :Si vous avez un site web, par exemple,d'énergies renouvelables, d'éoliennes, je veux dire,vous allez avoir besoin de connaître les vitesses de ventà plusieurs endroits en France.
00:28:16 :Vous n'allez pas vous emmerder à allerdans toutes les régions de France sur Météo France,à aller cliquer, etc. dessus, sur les pointspour extraire un fichier JSON téléchargéet le mettre dans votre site web.
00:28:28 :Ce que vous aimeriez, c'est que votre site web,votre application, aille directement chercherles informations sur le site web.Et ça, il y a deux moyens de le faire.
00:28:37 :Il y a le scrapping, mais ça, Thibault,il est en train de préparer un tuto là-dessus.Parfois, ce n'est pas toujours très éthique,on va dire, et voilà, si le site web change,parce qu'en fait, le scrapping, c'est basésur des recherches dans les pages HTML, etc.
00:28:56 :Donc, il suffit que le site web change,que votre application aille à refaire.Et oui, effectivement, c'est un peu borderline,le scrapping.Et donc, pour pallier ce problème,on a des API.
00:29:09 :Et donc, les API, c'est ce qui permetjustement d'extraire la data via des requêtesdirectement d'un site web et après vers un autreou vers un script, ce que vous voulez.
00:29:19 :Donc là, on va se servir de ce principe-làdans cet exemple.Ici, je vous ai mis, ça, c'est ce qui s'appelleun CRM.C'est en gros, d'ailleurs, je vous le conseille,c'est Dolibar.
00:29:37 :Dolibar, c'est un CRM open source.CRM, c'est pour Customer Relations Managementou quelque chose comme ça.C'est pour gérer, en fait, si vous voulez vous lancerdans le freelancing ou si vous voulez faire des missions,je vous conseille d'avoir ce genre d'outils.
00:29:54 :Ça vous permet de faire des factures, des devis,d'avoir un listing de produits, etc.Donc ça, c'est le CRM que j'utilise,que j'ai déployé sur un serveur assez facilement.
00:30:07 :Si jamais, un jour, vous voulez le faire,on peut en discuter si vous avez des questions.Mais donc, le CRM, il permet de faire des devis,de facturer les clients et aussi de direquels sont les produits et services que je vends.
00:30:21 :Ça, c'est un exemple.Vous n'en faites pas, je ne vends pas.C'est juste pour l'exemple.J'ai créé trois...Attendez, qu'est-ce que j'ai ?Donc, j'ai deux produits et un service.
00:30:35 :Avec, vous voyez, si je rentre dessus,outils spécifiques sur les données.Je peux définir le prix de vente, etc.Voilà.Poursuivre et régler.Oui, tout à fait.
00:30:48 :CRM, c'est fait pour ça.C'est vraiment pour suivre.Par exemple, si tu as émis une facture à la date Tet que tu dis que la facture doit être réglée dans deux semaines,si au bout de deux semaines, la facture n'a pas été réglée,tu vas avoir, par exemple, une notification dans ton système.
00:31:04 :Il va te dire les factures en retardet puis tu vas pouvoir régler la facture.Tu vas dire, mon client m'a payé.Tu peux aussi dire les règlements.
00:31:16 :Donc, oui, carrément, tu peux faire du suivi de règlement de client.Donc là, on a les différents produitsque vous pouvez mettre dans un devis ou une facture.
00:31:26 :Comme ça, vous dites, voilà, si je fais un devis et je dis,je veux vendre ce produit-là,je le mets et puis directement dans ma facture,je vais avoir une ligne, un item avec 700 euros, etc.
00:31:38 :Et puis, vous pouvez en rentrer d'autres.Donc là, je suis dans Produits.Imaginons que je dis DJA pour application Django.Je dis, ça, c'est, je ne sais pas, j'ai acquis une nouvelle compétenceet je veux vendre maintenant une application Django.
00:31:54 :Donc là, vous pouvez mettre ce que vous voulez, une description.Et on va mettre un prix de vente.On va dire, allez, 500 euros.Créé.
00:32:02 :OK, donc là, j'ai un nouveau produit avec cette référence.Libérez l'application Django et le prix de vente qui s'est mis à zéro.Ce n'est pas ce qu'on veut.
00:32:14 :Ce serait dommage quand même.Ah oui, c'est parce que j'ai mis le prix de vente.Oui, ce n'est pas ça que je veux faire.C'est ici.
00:32:23 :OK.Donc là, on a notre liste de produits.Et nous, maintenant, ce qu'on aimerait,imaginez que vous ayez un site webdans lequel vous essayez d'appâter un peu vos clients.
00:32:38 :Eh bien, vous aimeriez bien afficher la liste de vos produits.Mais bon, là, ici, le CRM, c'est un truc perso pour vous.Vous ne pouvez pas mettre ça sur un site web.
00:32:52 :Enfin, ça, ce n'est pas une page web accessible par n'importe qui.Vous, imaginez que vous avez votre site webet vous voulez extraire les datas.
00:32:59 :Parce que si jamais dans deux semaines,vous mettez à jour votre liste de produits,vous n'avez pas envie d'aller modifier votre script, etc.Vous voulez que ça se fasse automatiquement.
00:33:08 :Et donc, votre script, en fait, il tourne non-stopet il va se mettre à jour à chaque fois qu'il y a un nouveau produit.Ouais, donc je te dis, le nom, Seb, c'est Dolibar.
00:33:23 :Tu peux le déployer avec un container Docker assez facilement.Voilà, donc ça va, c'est clair pour vous un peu l'objectif de l'API, etc.OK. Donc, ce qu'il faut faire maintenant,
00:33:40 :je vais vérifier que je ne dévoile pas d'infos là-dessus.Après, ça va être propre à chaque API,mais je vais aller voir.J'ai mis sur l'autre écran,juste pour être sûr que je ne fasse pas de bêtises.
00:33:58 :OK. Donc, ça, ça va être propre un petit peu à chaque site Internet, etc.Enfin, là, site, c'est mon CRM, mais ça peut être autre chose.
00:34:08 :Vous allez avoir ici des options avec l'API.Donc, là, je vais aller dans la configuration de l'API.Et là, vous voyez, il me dit, ça, c'est ton lien avec l'API.
00:34:21 :Donc, là, je vais aller dans la configuration de l'API.Et là, vous voyez, il me dit, ça, c'est ton lien pour aller explorer ton API.
00:34:31 :Ça, c'est ton lien URL pour aller utiliser le Swagger.Donc, le Swagger, c'est un peu une espèce de...C'est comme une documentation technique interactive de votre API, le Swagger.
00:34:46 :Voilà. Et puis, si je vais là-dessus,par contre, il va me falloir...Donc, là, si je vais sur mon Swagger...Déjà, il ne veut pas...
00:35:00 :OK. Donc, là, je suis sur le Swagger, mais il me demande une clé d'Olibar.Donc, souvent, vous allez avoir...Vous allez voir ma clé, mais je la changerai juste aprèspour pas que vous ayez à faire des bêtises.
00:35:13 :Mais en gros, ça, c'est ma clé d'API.Donc, je vais juste la récupérer.Et je la mets ici.Et donc, là, voilà. J'ai accès à pas mal de choses.
00:35:26 :Tout ce qui existe dans mon CRM.Ici, je vais vous montrer les produits.Et si je vais voir la liste des produits,vous voyez ici, j'ai un petit peu...
00:35:36 :Si je fais Tryout, voilà.Il me donne un peu quel URL je dois taperpour aller récupérer tous mes produits.Donc ça, moi, si vous avez déjà suivi des mentorats que je fais,j'aime bien utiliser Postman,qui permet de décortiquer un peu les requêtes HTTP qu'on fait.
00:36:03 :Et souvent, il me donne... Enfin, souvent, tout le temps,il me donne quelle est la commande Python qu'il faut fairepour justement sortir ce truc-là.
00:36:11 :Donc, je vais juste, ici, recopier ça là-dessus.Ça, en fait, ça va être mon URL.Donc, je vais aller dans Postman.Je vais écrire l'URL. Tout ça, je n'ai pas besoin parce que c'est le tri.
00:36:24 :Donc, ça, vraiment, c'est mon URL pour accéder à...Donc, ça, c'est un URL d'API, un URL de requête.Si je fais ça, je vais avoir...
00:36:36 :Attendez, il me manque... C'est plutôt ça, Product.Voilà, voilà, Product.Ici, cette URL-là, c'est ce qu'on appelle un URL de requête.Il me permet de faire la requête comme je le veux.
00:36:53 :Est-ce que vous voyez assez bien? Je ne sais pas si je peux zoomer ce truc-là.Donc, là, je suis dans Postman, qui permet, comme je vous l'ai dit,de décortiquer toutes les requêtes HTTP.
00:37:03 :Donc, naïvement, ici, je mets ma requête HTTP GET.Je l'envoie et il va me dire, attention, erreur, je ne suis pas logué.Vous voyez ici, Unauthorized, Logging to API, etc.
00:37:17 :Donc, grâce toujours à Postman, après, il y en a d'autres, des logiciels comme ça,mais vous pouvez facilement rentrer une clé d'API.Je dézoome parce qu'en fait...
00:37:27 :Ouais, ça va, j'espère que vous voyez assez quand même.Donc, là, vous allez dans l'onglet.Tout ça, ce que je fais, c'est juste pour moi, pour décortiquer la requête,pour savoir quelle requête je dois faire via Python.
00:37:38 :Vous n'en faites pas si ça, vous ne captez pas, ce n'est pas grave.Donc, là, je dis, moi, c'est une clé d'API.Ça, c'est la clé d'API.
00:37:47 :Je l'avais rentrée tout à l'heure.Je vais la rechercher.J'étais dans Postman.Je rentre ma clé d'API.Je sais que le nom de la clé, il s'appelle DOLAPI-K.
00:38:07 :Je veux qu'il me le mette dans le header.Enfin, bref, tout ça, vous n'en faites pas trop.C'est juste pour moi, pour décortiquer la requête.
00:38:13 :Donc, là, maintenant que j'ai décortiqué la...Vous voyez, il me sort bien le résultat avec...Il me sort un JSON, comme ça,mais vous allez voir, on va le faire dans Python,avec tout ce qu'il faut, le prix, la description, etc.
00:38:28 :Et donc, il y a un truc qui est super avec Postman,si vous ne connaissez pas encore.Vous pouvez aller à droite, là, si je le cache.
00:38:36 :Et, en fait, il va vous afficher la requête qu'on vient de faire, là,via plein de langages de programmation différents.Nous, bien sûr, ce qui nous intéresse, c'est avec Python.
00:38:46 :Donc, maintenant, on retourne ici.On fait les bourrins, on copie-colle ça.Voilà, et je vais aller...J'avais créé un dossier tout à l'heure.Donc, je vais lancer un code, ici.
00:39:11 :Et on va faire...Produits et services.Donc, là, on va faire...Produits et services.OK, je vais zoomer un peu.Donc, là, je suis dans Python.
00:39:44 :Je vais dégager.Et là, je copie-colle, un peu comme un bourrin,le code que m'a donné Postman.Donc, tout ce que j'ai fait avec Postman, c'était juste pour...
00:39:53 :Après, j'aurais pu trouver la commande facilement,mais c'est pour avoir la syntaxepour comment on fait une requête comme ça, dans Python.Ici, je vais quand même utiliser un environnement virtuel.
00:40:03 :Python.Oui, je vais travailler dans l'environnement virtuel que je viens de créer.Et je fais un pip install request.OK.Euh...Généralement, il devrait...Voilà, c'est bon.
00:40:27 :Donc, là, ce que j'ai fait, c'est que j'ai défini mon URL de requête d'API.Ensuite, je lui ai dit que dans le header de ma requête,je veux mettre une clé qui correspond à la clé que j'ai récupérée dans mon CRM.
00:40:41 :Et ici, je veux lui dire...Donc, là, je fais la requête. Je fais une requête GET avec l'URL.Et ici, data.plot, j'en ai pas besoin.
00:40:49 :Voilà.On est bien.Je vais installer Python. J'aime bien installer Python pour...Ouais, il faut que j'arrive à écrire, par contre....Bah, ouais, ouais, le Postman, c'est vraiment hyper pratique.
00:41:20 :Par contre, quand vous installez Python, il faut faire attention de le relancer après.Sinon, il ne le trouve pas dans l'environnement virtuel.Non, ça, c'est pas grave, c'est un détail.
00:41:30 :OK, on est là.Oups.OK, donc là, je vais lancer mon script.Run...Non.Run produit et service.OK, donc là, maintenant, si je vais voir...
00:41:50 :Response.json, vous voyez que, ah, bim, j'ai tout ce qu'il me faut.Donc là, c'est un truc JSON, donc c'est peut-être pas hyper lisible.Ce que je peux faire, c'est que je peux directement le transformer en DataFrame.
00:42:03 :Import Panda as PD.OK, j'installe Panda.Vous me dites, hein, si vous avez des questions ou quoi,n'hésitez pas, pour ceux qui connaissent et puis ceux qui ne connaissent pas,n'hésitez pas, il n'y a pas de questions idiotes.
00:42:22 :Moi, j'avance tant que je ne vois pas de questions.Mais, vraiment, ça va être plaisir si vous en avez.Je relance.Et, en fait, comme je récupère un...
00:42:36 :Je vais récupérer un fichier JSON, on peut le transformer en DataFrame.Parce que si j'écris data égale response.json,vous voyez qu'ici, en fait,sachez que JSON, c'est le format standard et classique de toutes les API.
00:42:56 :En fait, les API, elles communiquent entre elles via des fichiers JSON majoritairement.Mais ce n'est pas très lisible, surtout quand vous avez des gros tableaux.
00:43:03 :Donc, ce que j'aime bien faire, c'est que je transforme ça en DataFrame.Donc, PD.DataFrame.Data.Et, donc, l'ADN.Donc, là, vous voyez, c'est déjà un petit peu plus lisible.
00:43:18 :Mais, sachez que nous, dans ce qu'on a rentré dans le CRM,si je vais voir dans produits et services,on a rentré que la REF produit, le libellé et le prix de vente.
00:43:32 :Donc, on va juste afficher ces colonnes-là.Je vais aller voir des colonnes qui sont dispo.Si je fais df.columns, j'ai accès à toutes les...J'en ai vraiment beaucoup, j'en ai 142.
00:43:47 :On va essayer de dire df.label, la REF et le price.Voilà.Donc, vous voyez qu'en quelques lignes de code,donc là, je suis vraiment dans un script.
00:44:11 :Donc, je suis vraiment à l'extérieur de mon CRM.Je ne suis pas du tout dans l'interface.Vous voyez qu'on a quoi, là ?On n'a même pas 10 lignes de code.
00:44:21 :On a réussi à récupérer via moyennant quelques accès,parce qu'ici, il faut avoir cette URL-làet il faut avoir surtout une clé d'API,parce que c'est normal que n'importe qui ne puisse pas accéder à vos produits.
00:44:34 :Là, c'est uniquement vous.Et je peux récupérer un tableau comme ça, un data frame,dans lequel j'ai, vous voyez, application Django, DJI A500.Et si, par exemple, je mettais à jour mon produit,là, je ne mets pas à 500.
00:44:48 :On va dire que j'ai envie de gagner plus de souset je mets à 1500.OK, j'enregistre.Et si, ici, je relance, on va le faire directement.
00:45:02 :Je relance tout ça.Produit.PDF.Vous voyez, là, je suis passé à 1500.Donc, c'est ça un peu la beauté,c'est que s'il y a une mise à jour dans ma base de données,parce qu'en gros, ici, qu'est-ce que je fais quand je mets à jour un produit ?
00:45:36 :Je mets à jour une entrée de ma base de donnéesqui est liée à mon CRM.Et je peux communiquer ce que je veux.Et je peux communiquer directement.
00:45:46 :Donc, vous voyez, en fait, ici, ce qu'on a fait, grâce à l'API.Donc, cette API-là, parce qu'on parle de Django, REST Framework, etc.Mais cette API-là, elle a été développée par les développeurs d'Olibar.
00:45:59 :Moi, je n'ai pas développé.Là, je me sers uniquement de l'API.Et vous voyez que l'API, elle permet de faire un pontentre mon CRM, ici, et mon script, qui est ici.
00:46:11 :Et après, ça, tout simplement, je peux aller l'injecterdans une application, dans un site web, dans ce que je veux.Ici, je vais voir si je peux le faire.
00:46:26 :Parce que juste avant, j'avais fait un projet.Je vais voir, on va essayer.Donc là, tout à l'heure, avant le mentorat, j'ai créé un petit projet Djangoqui s'appelle Freelancer, dans lequel j'ai mis, ici, j'ai une vue.
00:46:55 :J'ai une vue, et là, en fait, je balance des produits.Mais c'est des produits, ici, que je crée à la volée dans ma vue.Mais typiquement, si je lance mon truc, je vais le lancer là.
00:47:07 :Je vais le lancer là.Vous voyez, ici, si je vais sur Produits,j'ai Produits 1, Produits 2, Produits 3.Donc là, si, par exemple, je mettais Produits 4,et un jour, voilà, j'ai bien un produit.
00:47:42 :C'est bien pour vous montrer que c'est bien.Et ici, au lieu de mettre ce que je vous ai mis là,il suffirait de mettre, ici, les produits que j'obtiendraiavec le script que je vous ai montré tout à l'heure.
00:48:01 :Si, au lieu de hard-coder, entre guillemets, les produitset que j'en récupérais via l'API,donc il suffirait juste, ici, que je mette un import request.
00:48:13 :Voilà.Et je pourrais faire exactement la même chose.Si vous voulez, on peut essayer.Open.On va aller chercher ça.Je vais un peu faire le bourrin, comme tout à l'heure.
00:48:35 :Bon, normalement, il ne faut pas du tout le mettre là,mais c'est juste pour l'exemple.Import request, tout ça, je n'ai pas besoin.Je ne vais pas faire le panda tout de suite.
00:48:49 :Voilà.URL.Response.Et la réponse, en fait, je vais la mettre là.Voilà.Et on va dire que, dans le contexte des produits,on va les mettre...
00:49:12 :Qu'est-ce qu'on peut faire ?Allez, on va dire...LM.Est-ce que ça, ça va marcher ?Attendez, je réfléchis.On va aller chercher la ref et le prix.
00:49:50 :Alors là, j'ai commencé à avoir beaucoup de crochets.LM.In.Response.Json.On va voir si ça marche.Et puis là, dans...Dans mon template,on va mettre Fort-Produit.
00:50:10 :Je ne sais plus si ça marche.Est-ce que ça, Gabriel, de faire un index dans...Faut mettre un point.De quoi ?Faut mettre un point, je crois.
00:50:21 :Un point.Oui, mais je veux indexer...Parce qu'en fait, je suis un peu déçu.Attends, on va voir comme ça, déjà, si ça marche.OK.
00:50:33 :Je ne sais pas si ça marche.On va voir si ça marche.OK.Bref.Sinon, je vais juste...Je vais juste faire ça.LM.Je vais même mettre...
00:50:56 :Ça va peut-être être moche, mais...Voilà.Je vais voir si...Ouais, t'as raison.Peut-être que si je mets juste...Ouais, j'ai mes références.Et il suffit, après, que je mette...
00:51:17 :Voilà.Le price.Voilà.Donc, vous voyez quand...Là, je suis sur mon site web.Merci, Gabriel.Je suis sur mon site web.Et en gros, je décris tous les élémentsqui sont disponibles dans mon CRM.
00:51:41 :Mais si, encore une fois...Donc là, vous voyez que j'ai déjà des PAs.Je vais peut-être rajouter...Il y avait un truc.C'est...Pour que vous voyez bien.
00:51:51 :C'est produits.label, il me semble.Voilà.Application Django.Je rends mon application Django à 1500, etc.Et puis...Qu'est-ce que j'allais dire ?Donc là, on a ces quatre produits-là.
00:52:10 :Mais si jamais j'en rajoute un autre...Nouveau produit...Bon, je vais l'appeler test celui-là.TST.Et on va le mettre à 100 euros.Créé.Vous voyez qu'ici, si je retourne sur mon site webet que je mets à jour...
00:52:28 :Voilà, je vais avoir mon nouvel...Je vais avoir mon nouveau produit.Et donc, ça veut dire que...Vous pouvez avoir votre site web ici qui tourne.
00:52:39 :Donc là, typiquement, ce serait mon application Djangoavec une page spécifique pour présenter vos produits.Et si jamais, dans votre CRM,un jour, vous résultez un produit,vous n'avez pas du tout à vous soucierde la mise à jour sur votre site web,ça se fera automatiquement grâce à ce que peut faire Django
00:52:57 :et l'API.Voilà, donc...Et après, vous pouvez...Moi, en fait, à la base,ce que j'avais prévu aujourd'hui...Mais bon, ça va être trop tard, là.
00:53:17 :On ne pourra pas le faire.C'est, après, imaginer que dans mon application,j'aurais pu créer...Et si j'avais commencé à le faire,j'avais créé un modèle.
00:53:26 :Exactement les mêmes propriétés que ce qu'il y a dans le CRM,mais avec la date à laquelle on a vendu le produit.Et comme ça,on pourrait avoir une espèce de base de données d'historiquede la vente de tous nos produits.
00:53:42 :Après, forcément, ça,vous pourrez l'avoir aussi dans votre CRM, forcément.Mais c'était plus un exemplepour vous montrer pourquoi, après,on ferait notre propre API à nous.
00:53:51 :Si vous voulez,on peut faire ça la semaine prochaine ou une autre session.On peut dire,maintenant que j'ai ça dans mon application Django,j'ai juste la liste de mes produits,je veux créer une base de donnéesdans laquelle je mets le produit que j'ai vendu,la date à laquelle je l'ai vendu
00:54:10 :et la quantité que j'ai vendue.Et comme ça,on aurait une base de données via notre propre API,cette fois-ci.Parce qu'en fait,l'API d'Olibar permet d'accéder aux datas.
00:54:23 :Avec notre script,on a été chercher les datas de Dolibaret avec notre propre API,on pourrait aller injecter tout çadans notre propre base de données.
00:54:32 :Oui, après, tu pourrais,oui, Christian,tu pourrais, en fait,dans Dolibar, avec l'API,tu peux accéder à tout ce que tu veux.Tu vois, dans le Swagger,j'ai tous les trucs,l'invoice, les documents, les...
00:54:50 :Oui, bien sûr,on peut rajouter les ventes dans Dolibar avec...en passant par le site.De quoi ?On pourrait rajouter les ventes directement dans Dolibar.
00:55:04 :Les ventes, elles sont déjà dans Dolibar.Là, ce que j'ai fait, c'est...Le site, il a basculé dans le CRM.Je ne suis pas sûr de comprendre.
00:55:17 :Parce qu'en fait, ils sont déjà dans...Les ventes, elles sont dans le CRM aussi.Le site, ça te gère tes stocks dans le CRM.Ah oui, d'accord.
00:55:27 :Oui, oui, tu pourrais faire l'inverse,si tu veux dire.Oui, oui.Oui, oui, c'est possible.Avec l'API, tu peux faire aussi des postes et des...
00:55:38 :Parce que là, j'ai juste fait un get dans l'APIpour récupérer les infos,mais je ne sais pas,dans l'API pour récupérer les infos,mais je pourrais faire un put ou un get ou un poste.
00:55:46 :Oui, sans souci.Je comprends ce que tu veux dire.Si par exemple, ici, si on vendait...Si c'était un site de e-commerceet que les gens, ils commandaient des choses,on pourrait...
00:56:00 :Si on a...Je ne sais pas.Là, si c'était un t-shirt et qu'on avait 20 articles,si quelqu'un fait une commande d'un article,on peut aller mettre à jour dans Dolibarle nombre d'articles disponibles à jour.
00:56:19 :C'est possible.Parce qu'ici, quand vous allez dans Produits,Liste, je crois que vous avez...Est-ce qu'on peut modifier la quantité ?Oui, en fait, vous pouvez modifier...
00:56:35 :Est-ce que...Enfin, voilà, vous avez compris.Avec l'API, on peut faire des get et des postes.Et tout ce que vous voulez.Ça peut vous permettre, par exemple,si vous n'êtes pas satisfait de l'interface...
00:56:53 :Si, par exemple, vous aimez bien votre CRMmais vous n'êtes pas satisfait de la manièredont sont présentés les produits ou vos devis,vous voulez faire des calculs un petit peu dessus,faire des graphiques qui vous plaisent,vous pouvez faire les graphiques sur votre site weben utilisant les datas que vous avez extraites grâce à l'API.
00:57:14 :C'est un peu ce que je voulais vous montrer ce soir.C'est le principe de l'API, à quoi ça sert.J'espère que c'est un peu plus clairpour ceux qui avaient du mal à voir à quoi sert une API.
00:57:31 :En plus, Théa, je peux t'en mettre, je ne sais pas.Vas-y, vas-y.C'est comme ça que quand tu as des frameworks front,par exemple, si tu fais Streamlit,du React, je crois que tu fais d'abord ton APIavec Django Asset Frameworket après tu peux coller du React, il me semble.
00:57:49 :Ah oui, tu peux.Si, si, tu peux.Typiquement, ce que je fais avec Streamlit,les développeurs le font avec React.C'est un peu ta plateforme pour faire tes formulaires et tout ça.
00:58:05 :Oui, c'est vrai.Mais là, ce que j'ai fait avec Django,moi, je l'aurais fait avec Streamlitparce que là, je n'utilise pas de modèle, etc.
00:58:17 :Donc, il n'y avait pas besoin d'utiliser Django.Je pourrais très bien le faire avec Streamlitpour faire un truc plus joli.Voilà, c'était un peu, pour moi,c'est tout ce que j'avais en tête pour ce soir.
00:58:36 :C'est un projet de CRM ?Christian ?Avec DRF, ok.Si vous n'avez pas de questions...Ah oui, ok.Oui, c'est toujours bien de séparer le bac.
00:59:23 :Et oui, typiquement,les API, ça permet bien de...Merci Edouard, bonne soirée.Ça permet de bien séparer le bac et le front.Effectivement, c'est un autre moyen aussi de faire ça.
00:59:41 :Pour imaginer que le front, il ne fait pas du tout...Il ne fait que des accès, des get et des postes.Et puis, vous avez votre backend avec votre base de donnéesqui tourne ailleurs.
00:59:53 :Christian, tu nous montreras ça aussi.J'espère que ton site de recettes...Ah oui, le front, c'est un métier.Merci Fernando, bonne soirée.Merci à tous.
01:00:17 :Et puis, on va s'arrêter là.Ça va être bien chaud, je suis d'accord.Gabriel ?D'ailleurs, le front, ce que j'ai montré par rapport au forum,ça allait ou ça fait rentrer au visuel ?
Aucune occurrence trouvée pour « ».
00:00:00
Introduction de Thibault
00:04:22
Explication du programme par Pierre-André
00:07:44
Présentation par Gabriel de son projet de gestion de forums
00:18:19
Formulaires avec Crispy Forms
00:21:29
Système d'activation par e-mail
00:24:44
Explication sur le système CLI
00:26:01
Explication sur les API par Pierre-André
00:36:53
Présentation des requêtes avec Postman
00:46:47
Mise en pratique avec Django Rest Framework (DRF)
00:59:29
Question sur la séparation Back et Front