Authentification Streamlit avec Django et outils web
Session du 14 septembre 2023 à 20h00
Développement Web & Frameworks
Deviens membre Premium
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- +100h de formations
- +180 exercices de code
- +100h de mentorats en rediffusion
- 20 projets
- Mentorats groupés hebdomadaires
- Support individuel avec nos mentors
Authentification Streamlit avec Django et outils web
-
Gestion des users d'une app Streamlit avec Django et DRF (on l'avait déjà vu rapidement mais refaisons le depuis le début ensemble).
-
Inclure un chat interactif sur un site web facilement.
-
Une solution open source gratuite, auto hébergée avec taille illimitée alternative à WeTransfer et compagnie.
00:00:00 :Ok, l'enregistrement est parti. Je partage mon écran.Ok, est-ce que juste une ou deux personnes peuvent me dire...Ouais, merci, moi je rentre...J'étais aux Etats-Unis pendant 2-3 semaines.
00:00:26 :Du coup, c'était cool, mais c'était pas hyper reposant, mais c'était vraiment cool.Est-ce que vous voyez bien mon écran ?Oui.Ok, très bien.Nickel.
00:00:51 :Vous aviez vu... attendez, je récupère.Est-ce que vous aviez vu le programme ? Vous avez pu le regarder ?Attendez, je le reprends moi-même.Ok.
00:01:39 :En fait, du coup, ce que j'avais prévu, c'est...Alors, je sais qu'une fois en Mentora, c'était celui avec les gist snippets.Je ne sais pas si vous vous souvenez, on avait fait un dashboard streamlitet puis on affichait les snippets sur notre dashboard streamlit.
00:02:05 :Et j'avais été hyper rapidement sur l'API qui permet de faire l'authentification.Parce que ça, quand vous faites une application streamlit,parfois vous allez avoir besoin de gérer de l'authentification,donc on peut s'en sortir avec...
00:02:24 :Il y a beaucoup de solutions qui peuvent le faire,notamment Django et DRF, Django REST Framework.Après, on peut faire ça avec Flask, etc.Mais en gros, l'idée, c'est de se dire,j'ai une base de données dans laquelle j'ai les infos de mes utilisateursque je peux gérer, je peux en ajouter, etc.
00:02:41 :Et je vais pouvoir gérer leurs différents droits dans mon application.Donc, Django met à disposition, avec l'interface admin,ce moyen-là de gérer tous ses utilisateurs avec leurs droits,donc autant s'en servir.
00:02:56 :Et voilà, je vois Gabriel, moi aussi, quand j'ai besoin de faire un truc simple,j'utilise le secrets.toml,où je mets le mot de passe dans le secrets.toml
00:03:06 :et je mets à disposition le mot de passe.Du coup, avec ça, c'est un peu compliqué.Par exemple, si tu as un mot de passe oublié,si tu veux gérer différents droits,imagine que tu as un dashboard avec plusieurs pageset qu'en fonction de l'utilisateur,tu veux autoriser ou non certaines pages.
00:03:29 :Donc ça, ça va être compliqué de le gérer avec le secrets.toml.Et donc, c'est pour ça que je passe par une APIpour faire ça avec les utilisateurs.
00:03:39 :Donc, je vous propose, si ça vous intéresse, qu'on voie...Où est-ce qu'il y a mon petit pointeur ?Qu'on voie ça, là, pour commencer.Après, on verra comment on avance.
00:03:49 :Si on voit que ça prend trop de temps, on ira plus viteparce que je l'ai déjà fait avant, donc je vous le montrerai.Ici, j'ai découvert il n'y a pas longtempsun moyen pour inclure un chat interactifsur un site que vous avez ou même une page web.
00:04:04 :Je vais vous le montrer rapidement, si vous voulez.C'est hyper simple à mettre en place.Ici, vous voyez, des fois, on a un chatqu'on voit apparaître souvent sur des plateformesgenre Orange et tout ça, Free.
00:04:19 :Mais si vous avez un site web et que vous voulez le faire,vous pouvez le mettre facilement en place.Donc là, vous voyez, je clique et j'ai un chat comme ça.
00:04:28 :Et en fait, ce message-là, je vais le recevoir.Donc, c'est un espèce de robot.Donc là, vous pouvez renseigner votre nom, prénom.Donc là, je teste.
00:04:40 :Et puis le courriel, donc contact.Et en fait, après ça, vous pouvez aller voirsur votre plateforme sur laquelle vous avez configurévotre petit chatbot, là.
00:04:54 :Vous allez avoir ce message et vous pourrez répondre.Vous aurez les coordonnées.Pareil, dites-moi si ça vous intéresse.Ce n'est pas de la programmation Python.
00:05:03 :C'est juste un petit truc que j'ai vu et que j'ai utilisé.Si ça vous intéresse, dites-moi.Sinon, je ne le montre pas.J'ai des trucs qui ne vous intéressent pas.
00:05:14 :Et puis...Merci, Gabriel.Et je crois que je vous l'avais déjà montré,mais je ne suis pas sûr.Dites-moi une solution open source gratuiteavec volume limité alternative à 8 transferts.
00:05:33 :Pareil, c'est Pingvin.Donc, on peut déployer ça facilementavec un Docker sur un VPS.Et en gros, ça vous permet de créerune plateforme d'échange de fichiersavec vos clients, vos amis, votre famille, etc.,
00:05:47 :comme vous voulez, sans la limite.En fait, s'il y a une limite de volume,c'est lié à votre stockage physique.Mais vous pouvez avoir 200Go d'espacede stockage de transferts gratuitementsi votre disque dur fait 200Go.
00:06:04 :Je pourrais vous montrer ces trucs-làsi ça vous intéresse.Voilà un peu pour le programme.Donc, si ça vous va, on y va.Comment je vais l'appeler ?
00:06:21 :Je vais l'appeler Happy Out.Je vais changer le thème de mon VS Codeparce que Thibault m'a dit,je ne sais pas ce que vous en pensez,mais sur l'enregistrement des mentorats,le rouge n'y passait pas bien.
00:06:59 :Je ne sais pas si vous êtes d'accord,mais je crois que ce n'était pas ouf.D'ailleurs, j'ai commencé un peu comme un bourrin,mais je n'ai pas fait attention.
00:07:10 :Là, dans le chat, de ce que je vois,vous connaissez tous à peu près Django,si je ne me trompe pas.N'hésitez pas dans le chat à diresi vous ne connaissez pas du tout Djangopour voir s'il faut que je fasse des rappelsou des trucs comme ça.
00:07:32 :Tu parles de Django, Gabriel ?Oui, évidemment, oui.D'accord, j'ai peur.Ok.Oui, toi Gabriel, je sais que tu fais du Djangoet puis les autres, si jamais vous êtes perdus,n'hésitez pas à me dire.
00:07:57 :Ok, Spring, je ne connais pas.C'est quoi, Spring ?C'est quel langage ?Ok.C'est un framework, parce que...Ok.Ok.Ok.Ok.Ok.Ok.
00:08:22 :Ok.Ok.Ok.Ok.Ok.Ok.C'est un framework un peu pour faire des applications web ?Ok.Et tu le maîtrises ou tu...Et toi, tu voudrais switcher sur Django ?
00:08:44 :Ok.Bon, qu'est-ce qu'on fait ?Comme d'habitude, on crée notre environnement virtuel.Vraiment, s'il vous plaît, je compte sur vous.Dites-moi si ce que je fais, vous dites,putain, on l'a déjà vu plein de fois, etc.
00:09:07 :Moi, je trouve que...De mon point de vue, c'est bien de refaire des choses, etc.Comme ça, on peut plus facilement poser des questions, etc.
00:09:14 :Donc, je refais ce que j'estime qui est intéressant, etc.Mais vraiment, s'il vous plaît, je compte sur vous.N'hésitez pas à me dire, non, non, ça c'est bon,on l'a déjà vu, passe rapidement,ou pas besoin de le refaire en live, etc.
00:09:27 :On active l'environnement.Lean, activate, ok.Et on installe, du coup, Django.Et j'ai toujours un doute.Ok, donc là, on installe Django et Django Rest Framework.
00:09:59 :Installe Django.J'installe Django le framework et le rest framework.Et j'ai un problème, j'ai un problème,j'ai un problème, j'ai un problème.J'ai un problème, j'ai un problème.
00:10:18 :Rest Framework.Ok, on a installé ça.On va créer notre projet Django.Donc, Django admin start project.Et on va l'appeler app.App.Authentication.User.
00:10:58 :Si j'écris comme un mot, Django admin start project.Ok, donc là, on a bien notre projet qui arrive.Moi, ce que je vais faire directement, c'est aller créer,je vais d'abord, pour ne pas l'oublier,ajouter dans les applications installées,vous savez ici dans les settings, dans install apps,c'est là où vous allez ajouter toutes vos applications.
00:11:25 :Moi, j'ajoute directement, vous voyez ici, Rest Framework,parce que sinon, il ne va pas comprendrequand on va utiliser le rest framework de Django.Ok, donc là, on a installé ça.
00:11:39 :Ici, je vais commencer, je vais directement créer mon application,donc mon API qui va me permettre de faire l'authentification des usersvia une API.Donc, je l'ai créé.
00:11:49 :Ici, c'est des...On va dire API user.Je vais l'appeler API directement.Ok, et là, je n'oublie pas de la rajouter.Voilà, comme ça, on est prêt.
00:12:12 :Alors, on va...En fait, ici, souvent, quand on fait une API,c'est une méthode pour sérialiser un modèle.En fait, un modèle, c'est un objet, une instance de classe Python.
00:12:26 :Et quand on fait une API, on veut sérialiser ce modèle.Ça veut dire, en gros, on veut transformer le format de notre objet,qui est un objet Python, en un JSON, souvent,parce que les APIs fonctionnent avec le langage JSON.
00:12:43 :Donc, en gros, quand on dit sérialiser,c'est vraiment transformer le format objet Pythonen un fichier JSON lisible par un humainet qu'on interface facilement dans les interfaces web.
00:12:56 :Donc, en gros, c'est pour ça qu'ici, quand on crée une API,on crée un fichier Serializer directement.Serializer.py, ok.Et donc, on va hériter, en fait...
00:13:17 :C'est pour ça qu'on utilise le framework Django REST Framework,parce que c'est aussi un framework.Donc, on va utiliser toutes les méthodes Serializer qui existent déjà.
00:13:27 :Donc, from REST Framework, import Serializer,et on crée une classe Serializer.Donc là, on va dire qu'on va utiliser le modèlequi existe déjà aussi dans Django,donc le modèle user,from Django Contrib...
00:13:51 :On va utiliser ce modèle-là, en fait.Si on faisait une API, par exemple, d'une applicationque nous, on programme nous-mêmes,je ne sais pas, comme on faisait la dernière fois, un animal.
00:14:02 :Donc, si on faisait ça, en fait, on créerait ici un modèle animal.On dirait classe animal.Je ne vais pas aller la faire, mais c'est juste pour vous montrer.
00:14:12 :Et ici, on créerait une classe animal, etc.Et dans notre Serializer,ici, on importerait directement from Models Import Animal.Ce serait vraiment un modèle que nous, on a créé ici.
00:14:30 :On utilise un modèle qui existe déjà dans Django,qui est une classe ici de ce module-là.Non, je le custom par ici, dans le cadre de ce qu'on fait.
00:14:47 :En fait, moi, je veux juste me servir de l'authentification,de la gestion de l'authentification.C'est vrai que quand on veut faire une authentification basique dans Django,il faut faire un user custom,parce que vous n'êtes pas à l'abri de dire,ah oui, là, je m'authentifie avec l'email,mais plus tard, je vais m'authentifier avec un pseudo
00:15:10 :où je peux rajouter des choses.Et si on ne le fait pas au début, c'est galère.Donc, si vraiment vous voulez faire un site web Djangoavec un système d'authentification via des formulairesque vous faites avec des pages web,il faut faire un modèle user custom.
00:15:26 :Je crois que dans la formation Django de Thibault,il parle de ça.Ce n'est pas directement, il me semble, le user.Maintenant, ce qu'on fait,c'est qu'on crée un serializer de ce modèle-là.
00:15:42 :Donc, class user serializer.Donc, on va hériter du modèle serializer.Ok, donc on va hériter du serializer.modelSerializer.Ici, quand on définit un serializer,il faut définir une classe métaqui, en fait, définit à DRF quel modèle on utilise.
00:16:24 :Donc, moi ici, je vais utiliser le user.Et on va mettre tous les fields.Et puis tout ça, on va le mettre comme ça.Non, ce n'est pas copilot, c'est continuum.
00:16:45 :C'est gratuit.Parce que copilot, ce n'est pas gratuit, il me semble.Je crois que la dernière fois,Céline avait parlé de tab 9, si je ne me trompe pas.
00:16:59 :C'était toi, Céline ?Oui.T'en as plein.Je ne sais pas lequel vous utilisez, vous.Mais moi, je suis très content avec Codium.Tab 9, oui.
00:17:10 :Celui-là, il est bien.OK, donc là, on a fait un serializer de notre modèle userqui est une classe built-in de Django.Je continue, tant que vous ne m'arrêtez pas.
00:17:26 :Ensuite, ce qu'il faut faire, c'est créer un modèle viewsetce qui permet, en gros, c'est la vue.Le serializer, il faut le voir comme un peu le modèle.
00:17:36 :Et le modèle viewset, c'est votre vue.Donc pour ça, on va devoir importer notre serializer.Déjà, on prend le serializer, l'import, user serializer.On va devoir importer aussi les modèles viewsetmis à disposition par le REST Framework.
00:17:58 :Je vais mettre comme ça.Et du coup, on va créer notre viewset.User viewset, OK.Et il faut aussi prendre Django.Il nous faut le modèle.
00:18:19 :OK, donc là, on va avoir notre viewset.On est presque bon.Je vais vous montrer un peu comment ça se passe,comment ça se traduit, tout ça.
00:18:27 :Il va juste nous manquer les URL.On va aller chercher les URL.Moi, ce que je fais souvent, c'est que je copie.Je ne sais pas si vous avez remarqué,mais quand vous créez une application,il n'y a pas le module url.py par défaut.
00:18:42 :Je ne sais pas pourquoi,parce qu'en fait, il crée modèles et viewsavec des choses vides à l'intérieur,mais l'URL, il ne le fait pas.
00:18:49 :Je ne sais pas pourquoi, mais ce n'est pas dramatique.Et du coup, pour les URL, ce qu'on fait,dans les API, c'est un petit peu différentde ce qu'on fait avec Django classiquement.
00:19:02 :Je vais vous montrer.Ça, je n'en ai pas besoin.En fait, ce qu'on fait, c'est pareil.On va monter sur framework.router.On utilise un router qui permet de rassemblertoutes les routes.
00:19:22 :Je vais vous montrer dans l'interfacecomment ça se traduit, le router.Il suffit d'instantier un objet de la classe défauteuret on va aller l'enregistrer.
00:19:44 :En gros, ce qu'on dit, c'est qu'on crée un router.C'est une instance de la classe défauteur de REST Framework.Et on lui dit, tu m'enregistres.
00:19:55 :Ça, en gros, c'est un peu comme quand vous utilisezles classes View au lieu des fonctions.Il va vous définir automatiquementtoutes les méthodes post et list.
00:20:10 :Et il va les mapper sur votre modèle.Voilà.Et ensuite, il suffit de faire iciViews de Django et les Views de DR.En gros, justement, on ne peut pas dire différent ou pasparce que ce n'est pas des choses comparables,mais c'est l'équivalent.
00:20:31 :Je ne sais pas si tu vois ce que je veux dire.En fait, dans DRF, c'est pour faire des API,donc on est en train de discuter avec des objets sérialisésalors que dans Django, tu discutes avec des objets.
00:20:46 :Mais c'est tout à fait l'équivalence.On ne peut pas dire que c'est différentparce qu'on ne compare pas des pommes avec des pommes,mais c'est l'équivalent.
00:21:00 :OK.Donc, on ajoute nos URL.Et donc là, on va commencer à être bon.Je vais aller mettre ici...Et en fait, moi ici, je vais mettre tout ce qui va commencer par API.
00:21:27 :Je veux aller mettre...En fait, tous mes URL dans mon application globalequi vont commencer par API,je veux qu'il aille mapper tous les URL qui sont dans API,et dans API, il va aller mapper tout ce qui existeici dans mon UserViewSet.
00:21:49 :Il y a quelqu'un qui...Oui, je t'écoute, Gabriel.Oui, juste, j'ai un doute aussi.T'as mis Router pour enregistreret t'as mis une Rostering avec Users.
00:21:59 :Pourquoi déjà? J'ai un doute.La Rostering ne sert à rien.OK, donc juste User, ça correspond à...Oui, je vais te montrer à quoi ça correspond ici maintenant.
00:22:11 :On n'a pas fait l'immigration, je crois,donc j'y ai fait et je vais créer mon User.Create super user.Qu'est-ce que c'est que ça?Je crois que c'est mes échelons.
00:22:32 :OK.Manage.Donc là, si je vais voir là-dessus,donc là, forcément, il ne se passe rienparce que je vais zoomer un peu.Je n'ai pas défini de page.
00:22:59 :Et donc là, si je vais dans API,donc voilà, en gros, là, vous voyez à quoi sert le Router.Parce qu'ici, je n'ai qu'une seule route.
00:23:08 :J'ai une seule route qui est vers mes Users.Si j'avais fait d'autres, par exemple, Animal,et que si j'avais un modèle ici, Animal,j'aurais créé un Serializer pour mon modèle Animal.
00:23:23 :J'aurais créé un Viewset pour mon Serializerqui sérialise le modèle Animal.Et dans les URL, j'aurais ici, dans mon Router,donc c'est une route globale, celle-là, elle ne change pas.
00:23:35 :J'aurais fait un Router.register ici.Et puis là, j'aurais mis Animal.Et là, j'aurais mis mon Animal Viewset, comme ça.Et en fait, ce que vous auriez vu apparaître ici,c'est, donc là, ici, Gabriel, le User qui est ici,c'est celui que j'ai mis là.
00:23:59 :Ça veut dire, en gros, tout ce qui va être,et si je clique dessus, tu vois que mon URL, là,il va mettre Users.Si j'avais mis ici Toto,là, j'aurais eu Toto ici,et Toto quand je vais voir mes URLs.
00:24:16 :C'est un moyen de, c'est un peu comme un Name du URL.Donc là, vous voyez, en gros, ce qu'on a fait,c'est assez sympa,parce que si je vais voir dans Admin,ça, Admin, c'est l'interface Admin que vous avezquand vous créez un projet Django.
00:24:40 :Vous avez par défaut, je ne sais pas si vous avez déjà remarqué,mais vous avez Users et Groups.Donc ça, c'est vraiment, c'est un peu la vue administrateurdu modèle Users qui se trouve dans Django Contrib Hot Model.
00:24:57 :En fait, c'est défini ce User-là.Et donc là, on ne voit pas bien ici,parce que j'ai zoomé salement.Voilà, si je vais là-dessus,vous voyez qu'on a, en fait, la gestion de l'User Admin,qui est sympa.
00:25:13 :En fait, celui-là, je l'ai créé, c'est le Super User.Donc lui, je l'ai créé quand j'ai fait le Create Super User tout à l'heure.Donc là, c'est mon User Admin,via l'interface administrateur,mais j'ai aussi accès via l'interface API.
00:25:30 :Donc là, vous voyez que j'ai un peu...Donc là, c'est vraiment, ce que vous voyez là,c'est une sérialisation.Je ne sais pas si ça existe en français,mais en gros, en anglais, c'est Serialize.
00:25:41 :Vous voyez qu'il m'a transformé mon objet User en format JSON.Parce que là, vous voyez, j'ai un dictionnaire.Et ça, c'est pourquoi on dit que c'est sérialisable,parce qu'en gros, c'est lisé par un humain,et puis vous pouvez faire des accès clés dictionnaire.
00:26:00 :Donc voilà ce que fait...Ça, vraiment, c'est le cœur de la sérialisation.Vous voyez ici, en fait, j'ai...Donc là, c'est la méthode et le modèle Viewsets.
00:26:11 :Pourquoi, moi, j'ai utilisé ici le modèle Viewsets de REST Framework ?Parce qu'en fait, il est assez sympa.Il fait automatiquement une méthode...J'ai un trou de mémoire, aidez-moi.
00:26:27 :Vous savez, il y a une méthode GET, pardon.Donc ça, c'est la méthode GETqui est automatiquement générée par le modèle Viewsets de REST Framework.
00:26:35 :Et ici, c'est la méthode POST.Parce que si je veux, je peux créer un autre utilisateur via cette page-là aussi.Donc là, vous voyez, je dois rentrer le password, le username, etc.
00:26:45 :Voilà, donc méthode GET, méthode POST.Et ça, pourquoi j'ai automatiquement méthode GET et méthode POST ?Parce que j'ai utilisé le modèle Viewsets de REST Framework,et aussi parce que dans les URL, vous voyez,on a mappé les URL GET et POST automatiquement avec le Viewsets.
00:27:04 :Tout ça, en fait, je ne l'aurais pas automatiquementsi j'avais fait à la main les fonctions méthode GET et méthode POSTavec des fonctions et non des classes.
00:27:14 :Là, ça peut être un petit peu embêtant.On voudrait, par exemple...Qu'est-ce qu'on peut faire ?On peut dire...On ne veut pas que n'importe quel utilisateur puisse accéder...
00:27:28 :N'importe quel utilisateur sur Internet puisse accéder à ça.Donc, on peut tout simplement, ici, aller dans les settings,et on va lui dire...On va définir un peu des options pour notre framework,et on va lui dire que les classes d'authentification par défaut,c'est la Basic Authentication.
00:27:53 :Et ici, il suffit d'aller mettre...Mes URLs, je vais bien en avoir besoin.Mon setting non plus.Le modèle n'existe pas.L'URL, c'est bon.On peut aller dans le Viewset, et on peut lui dire...
00:28:09 :D'abord, on va dire qu'uniquement le mot de passe...C'est quoi ta question, Gabriel, pour le mot de passe ?Oui, excuse-moi, je vais commencer à l'écrire.
00:28:24 :Le mot de passe, tu peux exclure un champ de...De ce que retourne l'API, non ?Oui, bien sûr.Ici, j'ai mis All, mais j'aurais pu définir comme ça.
00:28:39 :J'aurais juste pu dire Username, Email, et celui-là, on ne le met pas.Oui, c'est ça.On va faire un All et exclure que le passeport,soit pour aller plus vite ou...
00:28:51 :Oui, tu peux.C'est vrai qu'il faut faire attention, il ne faut pas s'afficher.Après, de toute façon, là, ce que je comptais faire,c'est importer depuis REST Framework les permissions.
00:29:07 :Je vais mettre directement la permission,et je vais lui dire IsAuthenticated.Maintenant, si je mets la permission class,et je dis IsAuthenticated,vous allez voir que maintenant, si je baite...
00:29:27 :Ah oui, parce que je suis logé en tant qu'admin.Je suis logé, et maintenant, si je retourne dans l'API,et que je vais voir là...
00:29:43 :C'est étrange, ça.J'ai juste un petit problème.Pourquoi...Je vais aller voir dans ce que j'ai fait auparavant.Oui, c'est bizarre, ça, quand même.Bah, il y aurait...
00:31:22 :Attendez, je ne comprends pas pourquoi, normalement,il ne devrait pas m'autoriser.C'est pour ça que j'ai vidé le cache.Attendez, on va retester.100%, je ne suis pas logé.
00:31:35 :Si je fais API...J'avais jusqu'à là...Quand tu m'avais montré que j'avais jusqu'à là,j'avais galéré à trouver.Qu'est-ce que...Attendez, est-ce que je me suis...
00:31:52 :Permission...Ah, mais...Est-ce que c'est ça, non ?Je ne comprends pas.Alors, ça, c'est étrange.Est-ce que je n'aurais pas...Oui, est-ce que je l'ai fait comme ça ?
00:32:41 :Ça marchait l'autre jour, je ne sais plus.Et j'avais un cas un peu comme ça aussi.On va voir un truc dans le cache.Tu vois, ici, ça marche.
00:32:49 :Ça doit être dans mon cache Safari.Pourtant, ici, quand je le supprime,vider les caches...Je ne sais pas pourquoi,quand je vais dans Chrome,ça fonctionne bien.
00:33:01 :Ça, je n'en ai pas besoin, normalement.Je vais dans Chrome.Vous voyez, là, j'ai bien un problème.En fait, j'ai un problème.Je ne peux pas me connecter.
00:33:29 :Non, normalement, quand tu videsle cache de Safari...Tu as raison, je vais essayer.Non, je ne sais pas ce qu'il me fait, là.Il y a un truc qui ne va pas.
00:33:48 :Le cache, il n'est pas vidé.Bon, on va continuer avec Google Chrome,de toute façon.Donc là, vous voyez qu'en fait,maintenant, je ne peux plus me connecterparce que, voilà, j'ai ditqu'il faut être authentifiépour pouvoir continuer.
00:34:04 :Ce qu'on peut faire aussi,c'est ajouter directementdans les URL.On peut lui dire, vous voyez ici,là, mais du coup, je ne peux pas me loguerdepuis l'API.
00:34:18 :Pour l'ajouter, c'est tout simple.Il suffit de fairepass...Et c'est un APIAuthentification included.Et en fait, normalement, si je metsun...Vous voyez ici, j'ai un petitwidget login et donc là, je peux direadmin pass.
00:34:39 :Je peux me loguer depuis...Voilà, donc là, maintenant, je peux me loguer à partir de làet là, vous voyez que j'ai ça et je peux me faire un logout.
00:34:59 :Si il veut bien...Bon, c'est un petit peufastidieux, mais bon, en gros, c'est pas ça que...Ça redemande biende fois. Ouais.Je pense qu'il doit y avoir un petitconflit quelque part entre...
00:35:17 :Il doit y avoir rajouté quelque chose,le navigateur doit rajouter quelque chosed'authentification. Bref.Bon, c'est pas l'objet, il fautjuste que ça soit propre.
00:35:27 :Mais en gros,on est là. Et maintenant,l'idée, c'est justede se dire que depuisun script, on peut gérerune authentification. Donc, un script, ça peut
00:35:39 :être Streamlit, mais imaginez que vousayez un script. Donc là, on va faire un testdans Postman pour avoirla syntaxe un peu.Donc, dans Postman, je peux lui direadmin pass.
00:35:51 :Si je lui envoie...Et si, par exemple, je me trompedans le username,j'ai une mauvaiseconnexion. Donc,moi je fais ça, j'utilise Postmanjuste pour récupérer la syntaxede ce qu'il faut.
00:36:07 :Qui estde cette tête là.Et en gros,imaginez maintenant que vous ayez un scriptexterne. Donc tout ça, c'est notre...On va faire une autre console.
00:36:21 :Imaginons qu'on a notre serveurqui tourne avec notreAPI. Donc, ça peut être sur un VPSou n'importe où sur votre PC, j'en sais rien.
00:36:29 :Et là, vous avez un autre script.Donc, un autre scriptvia lequel vous faites des requêtes.requêtesapi.pyEt donc là,qu'est-ce qu'on peutrécupérer ?
00:36:45 :Je vais demanderà Chat d'ailleurscomment on peut...Je crois que je l'ai demandé tout à l'heure d'ailleurs.Euh...Voilà, doncen gros, si vous voulez faire une requêtedepuis un script externe,on peut utiliser ça.
00:37:25 :Je vais le copier brutalement.Et ici,donc request, il faut que j'installetype installrequestlà-dedans.Ici, c'estl'URLde notreAPI. Donc c'estuserlà.
00:37:55 :Le username,donc là c'est admin.Le mot de passe, moi j'ai juste mis passe.Bien sûr, ne le mettez pas en dur dans un script,il faut le mettre dans un fichier.
00:38:05 :Et voilà, doncmaintenant si je fais ma requête,qu'est-ce qu'on...requêtesapiVoilà, donc là, il m'a bienEn fait, je pourrais même justeEn fait, le code 200, ça veut dire quevous êtes bien connecté.
00:38:27 :Je pourrais juste mettre çaif code 200, je vais direconnectedet sinonon va juste mettreéchecde connexion.Voilà, donc si je retenteconnected etsi par exemple je me trompe dansle mot de passe, que je mets juste çaj'ai bienéchec de connexion.
00:39:07 :Donc voilà, en fait, c'est justepour vous montrer quej'ai été vite, mais c'est pour vous montrer un peule process de sérialisation, etc.Etcomment il fautdécorréler votre...
00:39:21 :Ouais, vas-y, Gabriel.Je suis désolé.En fait, t'as généré un codetout à l'heure avec Postman.Ouais.En fait, ce code que t'as généré avec Postman, c'est quoi ?
00:39:33 :C'est différent de celui-là, c'est pas la même chose ?Ben si, c'est quasiment la même chose, c'est juste qu'en faitavec Postmantu vois, icidans le header, il me metun code qui correspondau username et au passwordet en fait, moi, je vais juste demander àChatGPT, je veux juste
00:39:51 :pouvoir rentrer le username et le passwordparce qu'en fait, si jamais, tu voisdonc là, avec admin et pass,ça marche.Si jamais un jour, moi je veuxqui je veux dans admindonc là, j'aicomme ça, et que j'ajouteun userJean-Jean, tu voisJean-Jean et que son mot de passe
00:40:15 :va partir parce quec'est trop compliquéok, donc làje metsle passwordle passwordcomme çacomme çadonc là j'ai créé un nouvel utilisateuret icimaintenant, si je metsJeanet le passwordque j'ai misnormalementça va marcher aussidonc vous voyez, c'est pas mal parce qu'en fait
00:41:07 :mon script ici, il est complètementdécorrélé de mon APIet tout ce qui est utilisateuretc, vous pouvez le gérer facilementdepuis votreinterface admin. Imaginez qu'en fait
00:41:19 :vous développiezune application ici, donc c'est ce scriptexterne là que vous faites des choses une foisque c'est connecté, ifConnecteddo somethingok, donc là j'étais quelque choseet si jamais il y aun mec qui veut utiliser votre applicationetc, vous n'avez pas besoinde toucher quoi que ce soit
00:41:41 :ici, vous avez juste à aller dans votre interfaceadmin pour gérer l'authentificationdevotre application externevia cette interface adminet en plus, là-dedans vous pouvez diremon utilisateur Jean-Jeanil peut uniquementallervoir des chosesen fait si par exemple vous ditesdans le groupeje ne sais plus
00:42:07 :vous pouvez lui définirstaff, status etcest-ce que c'est un super useret en fait en fonction ducode que vous allez récupéreret en faitdu statut de l'utilisateurvous pourrez ou non accéder à certaines pagesde votre application ou pasc'est comme ça qu'on peut décorrélerfacilement une application grâce aux API
00:42:29 :Gabrielje pense pas que ça répond à ta questioncommentun exemple concret d'API parce que làc'est justel'utilisationdes users pour faireune authentificationexterneet voilàlà le but c'était pas de répondreà ta question d'exemple concret d'APIc'est vraiment juste l'authentificationviaDjango et Django DRF
00:42:59 :extrêmementje t'avoue que j'ai pasencore réfléchi à un autre cas d'applicationd'API maison peut trouver plein d'idéesokjustetu peux dans tous les cas copier le code de Postmanpour ça, eux ils sont là pour te fournirles codes en faitPostman c'est pour gérertes requêtes et tes réponses
00:43:23 :par exemple là j'aije pourrais dire save to filetu vois il me dit respond jsonje le mets dansje sais pas où tu voiset il m'enregistre un fichier json avec ma réponselà j'ai qu'un truc mais tu voistu pourrais très bien avoirun gros fichier json que tu peux
00:43:41 :ensuite ré-exploiter, ré-uploader je sais pas oùPostman il est plus fait pour çalà je me sers juste de cette petite featurede Postman qui met à disposition le codequand lui il fait une requêtemais tu vois Postman ici c'est assez simpleje peux direbah là j'ai fait une méthode get mais j'aurais pu mettre
00:43:57 :une méthode post avecici en plusest-ce que c'esttu vois il te met à dispositionun tableau dans lequeltu peux rentrer tes valeurs, c'est beaucoup plussympa que de rentrervia un script dansl'URL parce qu'en faitsi tu mets une méthode post avec des valeurstu sais tes URL
00:44:19 :ils ressemblent à des trucs du genrepoint d'interrogation égaltu vois c'est illisiblealors que Postman il te permet de fairetu vois Postman il dittu peux avoir différents types d'authentificationsoit tu utilises un tokendonc là tu mets une clé d'APIvoilà c'est pour mieux gérer tes requêtes
00:44:39 :c'est à ça qu'il sert Postmanet ça c'est une featureintéressante et tu peux même tu voistout à l'heure Céline elle parlait deJava, tu peuxfaire apparaître comment onfait en Javascriptje vais pas direde bêtises mais tu vois t'as plein detu peux changer en curl
00:44:59 :ça serait comme ça, en C-sharpvoilà donc Postmanil est pas mal quand même pour çavoilà pour ce que je voulaisvous montrer surles API, les connexionsj'ai été vite mais c'était juste pour vous montrer le conceptpensez-y la prochaine foisque vous avez besoinlà on parle de Streamlit mais ça peut très bien être
00:45:23 :un simple scriptqui tourne sur un serveurtout le temps et vous voulez qu'uniquementdes gens connectés que vouspouvez gérer indépendammentpuissent y connecterok est-ce queça va pour vous çaje vaisarrêter ce petit serveur làdonc si vous avezdes questions dites-moisinon je passe à autre chose
00:45:51 :ok bon bah je passe à autrechosequ'est-ce que vous voulez voirest-ce que vous voulez voir le chatque je vous ai montré là dessusvous voulez voirce petit truc là ou est-ce que vous préférezvoir l'équivalent8 transfertssachant que si on ne fait pas l'un ou l'autre
00:46:25 :on fera la prochaine foisje suis partagéle chatle chat okc'est pas vraiment du Pythonle chat je vais vous montrerc'est une feature que j'ai vuchez Brevoalors peut-être que vous avezdéjà vu Brevo quandThibaut il envoie des campagnes d'emailil utilise Brevoqui était avant Sendible
00:46:55 :en fait c'est un site internetqui permetde faire des campagnes d'email, de gérerdes clients etcvoilà donc on va aller voirsur Brevodonc là c'est mon tableau de bordparce que moi je suis connectéje vais me log outet je vais créer un nouveauje vais créer un nouveau compte
00:47:31 :créer un comptepar contre il vapeut-être me falloir une autre adresse mailcomment je vais faireje vais essayer de me connecteret je vais vous montreralors en fait quand vous allezvous créez un compte Brevoc'est gratuit il n'y a pas de souciset ici vous allez
00:48:03 :dans conversationet vous allez paramétrerici levous allez avoir un truc qui s'appellele chatdonc là vous voyez d'ailleursquand j'ai écritj'ai écrit via mon sitehello youdonc j'ai eu le Brevo botqui a répondu et ici j'ai le messagedonc là je pourrais répondre
00:48:27 :soit je mets un commentaireet en fait la personnequi a pas de soucisbonsoirsi je lui répondais iciil recevrait un mail parce qu'en faitla personne a renseigné son adresse maildonc je peux répondre ici directementet même si elle est plus sur mon sitela personne elle pourra avoir
00:48:47 :la réponsedonc pour ça le truc c'est que comme j'ai déjà paramétréest-ce queouais en fait vous allez dansicidonc conversationparamètres et là vous allez danswidget de chat et vous allez avoirplusieurs choses à paramétrer donc làvous avez les trucs, vous pouvez configurer la couleur
00:49:07 :vous pouvez choisir le typed'icône que vous voulezsur votre site donc moi j'ai pris celui-làje le veux en bas à droite et en fait lui ce qu'il faitc'est que normalementcomme j'ai déjà faitouais en faitvous configurez ça en disant je veux qu'il soit en bas à droite
00:49:29 :etc et il va vous donnerun code, un scriptque vous avez juste à copiermoi j'ai été le collerdans mon projet Djangoqui est mon site, j'ai été le coller dans montemplatevoilàj'ai fait juste d'aller le copierdans votre templatedans votre page HTML avant la fin
00:50:05 :du headdonc là je copie ici le script qui nous ditet tout réjouiten fait c'est justeun javascript qui est injectédans votrecode, dans votre page webdonc là j'ai fait avecvous avezplus de sonou c'est que Pierrec'est moi qui l'entends persode quoi ?
00:50:31 :okPierre il faut que tutu peux ressortiret revenir je vais t'acceptersouvent ça règle le problèmedonc vous voyez il suffit simplement d'ajoutercette balise là dans votre code, dans votre pageweb etc et vous aurezdu coup quand vous aurez surquand vous mettrezen production votre site
00:50:57 :vous allez avoir ce chat là et vous pourrezgérer la conversationla conversationavec vos clients, vos visiteursde votre site web etcje pense même qu'il y a moyen par exemple dans une appStream Unit à mon avis il y a moyenj'ai pas essayé mais j'y ai pensé un petit peu
00:51:15 :d'aller modifierà mon avis on peut injecterça dans le CSScustomdans une page webfaudrait que je regarde maisje pense qu'il y a moyen, après est-ce que c'est un intérêtou pas je sais pasen gros l'idée c'est de faire unvous pouvez ajouter ça dans votre site web
00:51:37 :facilement et puis vous voyez que c'estquand même une interface conviviale et puis vous pouvez répondreet vous pouvez même répondre en livesi vous êtes connecté sur votrecompte Brevo au moment où vous avez une demandevous pouvez chatterdirectement commesi vous êtes sur un site et que vous faites une demande d'aide
00:51:53 :et qu'il y a quelqu'un qui vous répond c'est comme ça que ça fonctionnedansj'ai été dans iciconversationparamètres et là le widgetde chatvoilà donc franchement c'est assez simple à mettre en placeça n'a rien à voir avec Pythonun petit peu parce que moi je l'ai mis dans mon projet
00:52:23 :Django maisvous voyez queparfois il y a des outilsqui existenten fait c'est bien de les recoderpour l'apprentissage parce que ça donne un butetc. mais voilà quand vous en avez besoin
00:52:37 :rapidement etc. il ne faut pas réinventerla roue en fait il faut utiliserle petit keylist surtout que là c'est gratuitet voilàsi vous avez un site webje ne sais pasvous proposez des services ou quoiça peut être appréciéde mettre à dispo ce genre de choses
00:52:57 :bon ben voilà pour moi pour aujourd'huije ne sais pas ce que vousici on peut le tester en localon peut l'installer comme ça sur un projet de Djangodans la HTMLoui bien sûr tu peux le tester en localet en faitde toute façon le compte que tu crées
00:53:15 :Brevo c'est un truc en lignequi est géré sur leur serveurAEdonc tu peux le testeren localet en faittu peux l'installersur ton sitedoncque tu le fasses en local ou en pro tu s'en fouslui en fait tu as un liendans le morceau de code
00:53:39 :que je t'ai montréil y a un lien vers ton compte Brevoautomatiquementet voilà ça fonctionnecomme çaokil n'y a pas besoin d'une API en faitc'est de l'intégrer d'accorden fait ça marche avec une APImais avec leur APIdonc encore un exemple d'APIAPI Brevo
00:54:03 :chatben voilàsi vous avez des questionsj'ai encore quelques minutesdu coupvous m'en trouverez la prochaine foisrappelez moi si je l'oubliela prochaine fois et que vous voulez le voircet outil là de gestionaprès je ne sais plusc'est qui c'est Sébastienqui disaitque ça l'intéressait
00:54:41 :si tu ne peux pas attendre jusqu'à la semaine prochainec'estc'est le projetPingvinet tu peux le déployeret tu peux le déployer facilementavec Dockersi jamais tu veux le voir avantje le ferai en live la prochaine foisça prend 10 minutes de le déployeravec Docker
00:55:03 :ben voilàje ne sais pas trop quoi dire de plussi vous n'avez pas de questionsah t'as testé Gabriel le chatmerci Jérémy bonne soiréeouais c'est sympa c'est vraiment rapidet'as rien à faireouaisil y avait des sites comme ça au début en PHPje me souviens il y a 15 ans déjà
00:55:43 :c'était la révolution à l'époqueje ne sais plus comment ça s'appelaitde faire quoile chat comme çapas forcément le chat mais il t'intégraitpas mal de choses comme çac'était un site qui a été racheté par une grosse boîte aprèsc'était vraiment à l'époque du site du zéro
00:55:59 :ah oui d'accordil mettait plein de plugins à dispoje ne faisais pas de programmationj'étais un peu HTMLc'était pour m'amuser comme çaet c'est vrai qu'il était un peuinnovateur quand il a fait çac'était racheté direct par une grosse boîteet le gars il est au bras masse
00:56:17 :il est plus parmi nousalors pour la question de The Crowouaistu utilises beaucoup Panda dans la data sciencemerci Jonathanbonne soiréemerci à tousnon t'es pas obligé d'utiliser JupyterLabmoi je déteste çales Jupyter Notebookça me gonfle, c'est trop chiantà partagerje sais qu'il y a beaucoup de scientifiques qui l'utilisent
00:57:01 :mais moi j'aime pas du toutc'est chiant à exporterj'aime pas du toutdonc t'es pas obligémoi je fais de la data science et j'utilise pas JupyterLabet bien sûrPanda il peut gérer plusieurs ongletsil peut gérer plusieurs ongletsExcelsi tu veux je peux te faire une démo là
00:57:25 :rapidement, si t'intéresse ou pas une petite démoje vais reprendreje vais mettre un nouveau dossier...OK. Du coup, il ne faut pas que j'en parle pour le moment.
00:58:15 :Ça donne quoi le score, Gabriel ?...0-0.0-0. Tu m'as fait peur....Mais pourquoi il ne met pas......Pourquoi il ne veut pas me mettre mon interpréteur Python ?
01:00:10 :...Quand je fais Select Interpreter, il ne veut pas....OK.Du coup, c'est quoi ton problème ?Tu as déjà ton fichier Excel ou tu veux construire ton fichier Excel ?
01:00:39 :...Tu m'entends ?Oui, je t'entends.Dans mon travail, j'ai un tableau Excel.Tu l'as déjà, le tableau Excel.J'en ai déjà un, c'est juste pour le faire.
01:00:59 :Mais là, je ne l'ai pas sur...Je vais en faire un.En gros, dedans, il y a des données qui sont...Il y a des...
01:01:10 :Il y a des formules qui sont rattachées à d'autres onglets.Ah, ouais.En fait, pour l'instant, je suis en train d'étudier le truc pour voir ce que tu dois faire et comment faire.
01:01:21 :Oui.J'ai la formation sur Doctrine.Oui, d'accord.Pour le CSV.Ça va m'aider un petit peu pour voir, à peu près.Oui, d'accord.Et voir si, par exemple, ce qu'il est capable de voir, par exemple, dans un champ ou dans une colonne,s'il voit une formule, est-ce qu'il est capable d'aller chercher...
01:01:44 :Comprendre la formule et aller dans l'autre onglet ?Chercher la formule, ça ne sera pas avec Panda, ça sera avec XLSX.XLSX, je n'ai pas regardé parce que j'ai vu qu'il y avait Panda et il parlait beaucoup de Panda.
01:01:57 :Ouais, mais en fait, Panda, c'est plus pour faire de la lecture et du traitement de données.En fait...Ah, c'est donné quand c'est pas forcé.
01:02:05 :Voilà, c'est ça, ouais.Parce qu'en fait, si, par exemple, dans une colonne, tu as des nombres qui sont au-dessus d'une formule,Panda, lui, va juste lire le nombre qu'il y a dedans.
01:02:14 :Alors que XLSX...De toute façon, Panda, il utilise XLSX.Mais XLSX, avec lui, tu verras, tu peux aller définir, tu peux aller dans ta cellule,tu peux choisir, je veux la valeur de la cellule ou je veux la formule de la cellule.
01:02:29 :Donc, du coup, là, j'allais faire un truc, mais en fait, c'est pas ça que tu veux.Ah, excuse-moi, en fait, c'est pour avoir, tu sais, avoir vraiment la valeur de la cellule.
01:02:39 :Enfin, la valeur de la formule.La formule, genre, qui prend B2...Par exemple, tu as la formule dans ta case, elle va chercher dans l'autre onglet,elle va chercher dans l'autre onglet, l'information qui est dans la case C2, par exemple.
01:02:59 :Ouais, et toi, tu veux la formule, en fait, toi tu veux...Moi, non, je veux récupérer la valeur qu'il y a dans l'autre onglet.Donc, en fait, quand t'es...
01:03:11 :Donc, là, c'est dans feuille 1.Dans feuille 1, ça dit que dedans, il y a égal, par exemple, un égal...Ouais.Et c'est égal à ce qu'il y a dans l'autre côté.
01:03:22 :Ouais, C2, et donc là, si je vais dans C2, c'est que je mets 2.Donc, en gros, ici, dans B2, j'ai le C2 de la feuille 2, plus 1.
01:03:36 :Et toi, est-ce que tu veux récupérer...Là, Panda, il va réussir à lire directement le...Là, si je lui dis de prendre la colonne B...
01:03:43 :Ouais.Il va me sortir directement le 3, il va me sortir la formule qui est dedans.Avec Panda, il va prendre 3.Mais ce n'est pas ce que tu veux, du coup.
01:03:54 :Si, c'est bon, c'est bon.Je veux savoir ça.Ok.J'aimerais bien s'il arrivait à lire, quand il extrait,est-ce qu'il lit ce qui est vraiment marqué, ou il écrivait lui-même la formule qui est dedans.
01:04:07 :Ouais, bien sûr.Regarde, en fait, ici, si tu fais...Il y a beaucoup de formules dans le truc de boulot, il y a beaucoup de formules.
01:04:17 :Tu vois, je mets header.auto1, header.auto2.Et puis ici, je mets 5.Là, c'est une formule.Là, c'est un chiffre rentré en dur.Et là, dans I.O., je mets header.io1, header.io2.
01:04:37 :Et puis là, je mets 25.Donc, tu vois, là, c'est des valeurs rentrées en dur.Et ici, si tu fais ça...Et donc là, en fait, tu peux juste aller dire df égale pd.dataframe.
01:04:50 :Donc là, tu mets le nom de ton fichier Excel, data.xlsx.Et en fait, ici, tu as juste à dire sheet name.Donc là, ma sheet, elle s'appelait comment ? C'est Toto.
01:05:03 :Donc, on va dire df Toto.Et puis, on va dire df I.O.Voilà, j'ai pu faire ça normalement.Et ici, si je fais...Est-ce qu'il y a...
01:05:26 :Il faut que je sois bien sûr de garder, ouais.Dans I, the group sheet name, c'est 100 underscore.Ah oui, non mais attends, je fais n'importe quoi, c'est pas ça, c'est pd.
01:06:04 :Read Excel, pareil.C'est ce que vous disiez, parce que j'avais vu Read Excel sur Internet.Ouais, Read Excel.Et donc là, maintenant, en fait, je m'étais trompé, c'était bien sheet name.
01:06:35 :Ah oui, il faut que j'installe OpenPyExcel, pip install OpenPyExcel.Et donc là, tu vois, df Toto et df I.O.Par contre, en fait, le truc, c'est que tu peux lui dire...
01:07:00 :Il faut lui mettre ça, en fait, parce que sinon, il ne va pas comprendre.Donc, tu vois, dans Toto, il faut que tu mettes...Tu peux mettre B, A, C.
01:07:07 :Tu dis B, C.Et lui...You scroll...C, A, D.En fait, c'est deux points de C, A, D.Mais bon, là, comme il n'y en a que deux, c'est pareil.
01:07:22 :Et si tu voulais juste colonner...Là, il t'a affiché que...En fait, il t'a affiché parce qu'avant, tu n'avais rien.Il est parti au maximum à la colonne à droite où il y a des données, en fait.
01:07:31 :Et il t'a laissé les deux premières en haut.Voilà, exactement, ouais.En fait, il prend tout ce qu'il y a avant, et après, à droite, il met...
01:07:37 :Comme c'est fait jusqu'après, il prend...C'est un passage en fichier, mais il commence...Ah, il termine après un certain truc, donc ça ira.Ouais, mais ce que tu peux faire, c'est que tu lui dis...
01:07:45 :Et par exemple, là, si j'avais un trou, et tu vois que c'était comme ça...Ah, il peut s'arrêter un peu mieux.IO, tu peux faire ça, en fait.
01:07:53 :Tu peux mettre dans IO, tu peux mettre C.Et au lieu de mettre...Il va juste te prendre la colonne C et E.En fait, quand tu mets deux points, c'est tout ce qu'il y a entre B et C,B et C inclus.
01:08:04 :Et si tu veux juste des colonnes définies, tu peux...Et par virgule, il choisit les colonnes ?OK.Juste par virgule, ouais, c'est ça.Donc là, si je le refais...
01:08:14 :Donc là, si je regarde mon df.toto, tu vois, il est plus beau.Et df.dio, il a bien pris juste les deux que je lui ai définis.
01:08:24 :Et tu vois, il prend bien juste les valeurs.Il n'y a pas de souci avec la formule.Mais ouais, si tu as des questions, n'hésite pas.
01:08:38 :Sur Pandarm, j'utilise vraiment beaucoup, presque au quotidien.N'hésite pas à poser des questions sur la plateforme, dans l'onglet questions.Ouais.Quand j'ai vu que j'ai pensé à ça, et que ce soir j'ai vu qu'il y avait de la...
01:08:57 :On peut poser la question ce soir.Ouais, ouais, n'hésite pas.OK.De toute façon, je sais que ça va être complexe après.Ouais.Ce que je vais faire, c'est un peu complexe pour eux.
01:09:10 :Ouais, ouais, d'accord.Ben ouais, après...En fait, en gros, je vais récupérer dans le fichier Excel, je récupère des données.Ouais.Et ces données-là, en fait, en gros, moi je travaille dans la téléphonie d'entreprise.
01:09:22 :Donc après, c'est un plan NUM.Et ce plan NUM, je vais le retransformer en fichier CSV.Hum hum.Avec une structure particulière pour après le créer en import de masse.
01:09:34 :Pour après que ça aille dans une machine, et la machine crée le plan NUM automatiquement.Et la machine, elle mange du CSV, et pas du Excel.
01:09:41 :Alors, c'est du CSV normalement, je crois.Ouais, ben après, en fait, une fois que t'as extrait tout ce que tu veux depuis ton fichier Excel,si tu veux, tu vois, par exemple, si mon DataFrame.io, je le voulais en CSV,
01:09:53 :t'as juste à faire tout CSV et...C'est après, au pire des cas, après je verrai pour le reproduire.Tu peux même lui dire quel séparateur tu veux, tu vois, là tu peux lui dire en fait...
01:10:07 :Oui, parce que, attends, je me rappelle plus, en CSV, c'est une séparateur par virgule, je crois.Ah, en fait, le nom, ça veut dire, CSV, ça veut dire Comma Separated Value.
01:10:17 :Ah, c'est ça, c'est la séparation par virgule.Donc, historiquement, c'est virgule, mais tu peux mettre tous les séparateurs que tu veux.Tu vois, là, quand tu fais tout CSV, tu peux dire séparateur égale ce machin-là.
01:10:27 :Et si je fais ça, et que je vais voir mon CSV...Ah non, je ne sais pas si tu parles français encore.Ah, pardon, je ne parle pas français.
01:10:35 :Je ne sais pas si tu parles français encore.Ah, pardon.Merde, où est-ce qu'il est, le truc ?Ah, voilà.Oui, par contre, qu'est-ce qu'il y a ? Je ne sais pas partager le bon truc.
01:10:58 :Tu vois, ici, j'ai mis df2csv, donc mon DataFrame en CSV,et je lui ai dit séparateur égale ça.Tu lui mets ce que tu veux par virgule tabulation.
01:11:18 :Et là, affiché dans le Finder, quand je vais voir mon CSV...Je l'ouvre avec, je ne sais pas, n'importe quoi.Tu vois, j'ai bien affiché CSV avec le séparateur que je lui ai défini.
01:11:31 :Forcément, le CSV, c'est un peu plus dégueulasse visuellement,mais les machines, c'est ça qu'elles disent.Et tu fais tout ça simplement avec Panda.Ça marche très bien, c'est très efficace.
01:11:43 :Ok, parce qu'en fait, pour l'instant, j'ai pas fait un cours de data science.Et là, tu me dis, là, est-ce que ça me touchera un peu le dédant ?
01:11:52 :Ah, oui.Ok, ben...Je t'en prie.Je fais un peu la formation qu'il y a sur Doctrine,déjà au moins comme ça je vois un peu à quoi ça va se dire.
01:12:06 :Ouais, mais bon, tu vas voir, c'est hyper puissant Panda,il y a vraiment beaucoup de choses.Et après, je vois quand tu montres des fois du Panda,ou je vois avec des fans d'Intelligence, avec Panda...
01:12:17 :Ouais, c'est très très puissant.Je vois, il y a vraiment beaucoup de choses.Ouais.C'est pas pour rien, c'est le plus populaire.Oui, c'est clair.
01:12:27 :Et après, j'avais posé quelques trucs pour Jupiter,parce que je voyais que dans la formation, il utilise Jupiter.Ouais.J'avais entendu dire qu'ils utilisent tous...
01:12:39 :Ouais, ben, en fait, les scientifiques...Je me suis dit, après, si je veux faire un script ou autre,ou un truc automatique...Ah, franchement, c'est chiant, ouais.
01:12:47 :Avec Jupiter, avec les autres, ça va être compliqué.En fait, Jupiter, c'est vraiment pour les purs scientifiquesqui codent vraiment pour leurs résultats de science.
01:12:56 :Un développeur, il va pas utiliser Jupiter,parce qu'en fait, Jupiter, à la base, c'est bien pour présentertes résultats, présenter les graphiques, etc.Si toi, tu fais du script de l'automatisation, etc.,
Aucune occurrence trouvée pour « ».
Bravo, tu es prêt à passer à la suite