Session du 25 septembre 2025 à 21h00
TOSA & Certifications
Session de mentorat Django et HTMX
Session de mentorat Django et HTMX
00:00:00 :Bonsoir tout le monde. Petite question, est-ce qu'il y en a qui ont déjà fait du Django et HTMX ou quoi ?Pour moi c'est uniquement Django, pas HTMX.
00:00:18 :HTMX jamais.Jamais aussi.Non plus.Jamais de HTMX.Salut Mohamed.Ok.Jamais de HTMX.Ok.Alors, il y en a qui savent ce que c'est quand même HTMX ou pas du tout ?
00:00:42 :J'ai regardé vaguement tout à l'heure avant de faire mon thora mais je ne sais pas vraiment ce que c'est.Ok.Et Mohamed, toi tu fais du Django sinon ou pas ? Je vois que tu ne me connais pas mais juste pour savoir.
00:01:02 :Je vais commencer à partager mon écran d'ailleurs au passage.Bon, tac. Ok.HTMX.Alors du coup, si vous êtes un peu comme moi, du genre à ne pas vouloir écrire du JavaScript,vous établissez votre Django.
00:01:29 :C'est Flask qui est beaucoup trop de Flask. Je vais le changer un peu.Ok, je comprends.Bien que Flask, c'est très bien d'ailleurs.Du coup HTMX, ça vous permet en fait de faire des requêtes AJAX.
00:01:40 :Je vulgarise un peu mais oui, on va faire des requêtes AJAX sans écrire du JavaScript.Et en fait, on va le faire directement dans le HTML.
00:01:49 :Et donc on va appeler des morceaux de HTML, du partiel en fait, des bouts de HTML.Alors je ne sais pas, j'imaginais qu'il y en a qui sont ici déjà développeurs pro.
00:02:06 :Donc par exemple Antoine, tu dis que tu ne connais pas HTMX mais toi tu le fais en JavaScript pur j'imagine,ou avec des librairies quoi, tout ce qu'il y a de JavaScript.
00:02:16 :Oui, on le fait en JavaScript pur ou on réacte.Je t'en parlais tout à l'heure.Sachant que moi en fait, un exemple tout con, mais dans les projets Django,je m'embête très rarement moi avec des frameworks front.
00:02:34 :En général c'est soit Tailwind, soit du Bootstrap.Et oui, j'adore Bootstrap.Sinon Tailwind, quand je veux en faire un truc assez moderne, je prends du Tailwind.
00:02:45 :Et en fait, j'ai ajouté du HTMX pour ce côté dynamique,genre faire ce qu'on appelle une single page application,mais un peu détourné on va dire.
00:02:55 :Parce que là tout passe en fait côté serveur.Du coup, je vous ai mis là, c'est pas dur, c'est htmx.org.Et puis si vous voulez, il y a des petits exemples.
00:03:06 :Donc il faut aller voir un peu comment ça se passe.Clic to edit, on peut directement éditer ici, annuler, envoyer, ainsi de suite.Il y a comme ça plusieurs exemples ici.
00:03:18 :Pour info, au niveau de l'installation, ils vous donnent ce qu'il faut.On peut télécharger un dossier JavaScript,ou on peut directement prendre le CDN.Bon là on va passer en réalité, on va prendre le CDN, c'est un peu plus vite.
00:03:35 :Pour ça, on va partir sur un projet très simple, très basique.Le but c'est de faire du JavaScript, du HTMX en fait,mélanger ça avec des templates et une vue Django.
00:03:46 :En fait, on va se créer qu'une seule vue.On va faire plusieurs choses avec.Allez, c'est parti.On va se créer un dossier.Je vais l'appeler comment ?
00:03:58 :Je ferai un repo dessus à ce moment-là, si vous voulez.HTMX.Il y en a qui sont débutants,même avant que l'on arrive, on en parlait avec Django.
00:04:12 :Pas trop.Là, on va initier le projet depuis zéro.Là, on est dans notre dossier.Doctrine.htmx.Elle concerne le projet et il n'y a rien dedans.
00:04:24 :On va se créer un environnement virtuel.Voilà.Et on va installer Django.On n'aura besoin que de Django pur, on n'aura pas besoin de librairie externe.
00:04:41 :Voilà, on n'a besoin que de ça.On va se faire un petit Django.Admin, start project.Ah oui, je suis bête.Ok.C'est bon.Ok, c'est parti.
00:05:05 :Hop là.Je vais agrandir un peu l'écran parce que ça va être un peu juste, je pense.On va copilot et mettre un petit peu en surdine, je pense aussi.
00:05:15 :Voilà.On verra, c'est bien.Il y a Joana qui rejoint la session.Hop.Salut Joana, je ne sais pas si tu entends.Hop, si t'as déjà réussi à rejoindre.
00:05:42 :C'est bon.Nickel.Ok.Salut Joana.Pour ceux qui m'ont dit que si t'es débutant avec Python,on a parlé un peu avant qu'on commence la session, avant que tout le monde arrive.
00:06:01 :Django, ce n'est pas dur, c'est du Python.Ça reste du Python, c'est juste qu'on est sur du framework.Sur DuckString, il y a une formation complète sur Django pour ceux qui ne savent pas.
00:06:20 :Elle est disponible pour les noms de premium.Il y a une offre à 14,99€ par mois qui est l'offre premium.Vous avez accès à tout le site et vous avez accès à la formation Django.
00:06:37 :Si je vais sur Duck, ici.Formation.Elle est là-haut.Elle est où ? Là, ici.Donc vous avez la formation Django qui est ici.Moi, j'ai tout appris avec ça.
00:06:54 :Ouais, quasiment tout avec ça.Et en plus, on propose aussi une formation CPF pour avoir le Toza.C'est une formation certifiante pour avoir une certification Toza.
00:07:08 :Pour ceux qui ne connaissent pas le Toza, c'est un diplôme.L'organisme Isograde est surconnu par énormément d'entreprises et d'écoles.Ça permet d'acquérir des bases avec un parcours individualisé.
00:07:26 :Il y a quelqu'un qui s'appelle.J'ai un problème, je n'arrive pas à l'accepter.C'est bon.Pour l'avoir faite, la formation sur Django est très complète.
00:07:43 :Et si on a suivi la formation de base sur Python, on la comprend très bien et très facilement.Voilà.Merci de l'état en retour.Donc effectivement, Django reste du Python.
00:08:00 :Donc avoir des bonnes bases en Python, c'est le top du top.Après, je sais, on peut très bien faire du framework sans être un pro dans un langage.
00:08:08 :Mais c'est vraiment l'idéal d'avoir les bases, voire plus, en Python.Donc voilà.Donc on a soit la formation 3M, où vous êtes un peu entre guillemets en électron libre,où vous avez accès à tout le contenu.
00:08:24 :Vous avez accès à tout, ou vous avez la formation Tozak.Ah, il y a quelqu'un qui arrive.Donc voilà pour la formation Django, qui est là.
00:08:38 :J'accepte encore du monde.Bonsoir, salut.Salut, c'est fait, je viens d'arriver.De toute façon, là, on n'est encore qu'au début.J'étais en train d'explorer un petit peu plus s'il le faut.
00:08:53 :C'est parti. Du coup, je repose dans les têtes.Donc là, je vais initier un projet Django.Il n'y a rien dedans.J'ai juste ramassé un Django Admin Start Project.
00:09:05 :On va prendre l'exemple du blog qui peut être sympa pour acheter Amix.Ça rend des choses basiques, mais pour vous montrer comment on peut faire ça.
00:09:14 :Du coup, on va se créer un blog.Une application blog.Je remets cette chatte devant mes yeux quand même, au cas où.Hop là.Donc là, on s'est créé une application blog avec la petite montre que je viens de taper.
00:09:39 :Dites-moi, c'est assez grand pour vous ou pas l'écran ?Pour moi, oui.Pour moi, c'est bon.Comme j'ai créé une application blog, je veux qu'elle soit plus en compte.
00:09:54 :Donc, je vais aller l'ajouter ici.Ah oui, je ne suis pas copilote.Donc voilà.Ici, j'ai l'impression d'avoir une application blog.Il reviendra juste ici pour les URL.
00:10:09 :Enfin, l'URL.L'unique URL qu'on va avoir, c'est tout.Et pour moi, ici, c'est tout.Donc, on va commencer par se créer des modèles pour le blog.
00:10:23 :Alors, on ne va pas s'embêter.On va se faire une catégorie.Hop.Donc, ça va nous permettre, en fait, de...Comment dire ?D'avoir des...
00:10:43 :De rattacher les...J'ai fait une faute.Catégories.De rattacher des...Comment dire ?Ah !Des catégories, des articles.Voilà.D'associer plutôt, on va dire.
00:10:54 :Donc, on va juste donner un nom et on va dire que c'est un carfield ici.Hop.Et on va lui donner un max length à 100.
00:11:04 :Ça me paraît pas mal.Et pour que ça soit plus visible dans l'admin...Hop.Excusez-moi.J'ai l'eus qui vient de m'embêter là-bas.Dans l'admin, on va...
00:11:20 :On va afficher, en fait, le nom de la catégorie d'un coup dans l'admin.Sinon, ça aurait...Sinon, en fait, tu aurais marqué, genre, catégorie object 1, object 2, object 3.
00:11:28 :Voilà.Donc, au moins, il aura marqué dans la catégorie.Je ne vais pas dessus en détail parce que ce n'est pas le but du mentorat.
00:11:35 :Et je le referai, si vous voulez, sur vraiment les bases des bases.Mais il y a les cours de Thibault et on a déjà fait des mentorats un peu dessus.
00:11:41 :Donc, je reviendrai plus tard dessus.Donc là, le but, c'est d'avoir des modèles.Tac.Et on va se faire un modèle post.Alors, hop.Alors, je n'ai pas préparé de copier-coller pour ce soir,à part un petit bout de template.
00:11:56 :Donc, on va faire ça ensemble.Comme la plupart des mentorats, d'ailleurs.Tac.Airfield.En général, je prépare des copier-coller quand j'ai beaucoup de template.Parce que je n'ai pas de carte de HTML et du CSS.
00:12:11 :Donc là, on va avoir un titre à notre article.Ça, ça représente un article.On va avoir le contenu.Hop.Donc, on va dire que ça va être un...
00:12:21 :On ne le verra pas, je pense que ce sera du contenu, mais ce n'est pas grave.Si, pour la recherche, au moins.Tac.On va se faire un textfield.
00:12:26 :On va se dire...On va rattacher...On va dire que l'article est écrit par un...On va avoir un auteur.Donc, pour ça, le mieux, ce que je fais toujours,c'est que je le rattache à un modèle utilisateur.
00:12:40 :Donc, pour récupérer dynamiquement mon modèle utilisateur,je vais importer une fonction qui s'appelle getUserModel.Voilà.Puisque, quand vous avez un modèle utilisateur,vous utilisez soit celui de Django qui est, entre guillemets, built-in,ou, comme je le fais souvent, je vais le redéfinir.
00:13:01 :Et je vais redéfinir dans les settings ce fichier-là.Je vais dire, utilise mon modèle à moi.Bon, là, je ne le fais pas ce soir, mais en gros, je dis ça.
00:13:10 :Et donc, quand je fais getUserModel,ça va aller me chercher justement le modèle utilisateurqui est utilisé, en fait, dans le projet Django.Donc, c'est assez propre, du coup.
00:13:21 :Hop, comme ça, on sait qui va me récupérer le bon modèle.Donc, là, qui restera, du coup, par défaut, le modèle Django,puisque je ne l'ai pas défini.
00:13:30 :OK. Donc, l'auteur.On va faire une floreNk ici.Est-ce que tout le monde est à l'aise avec les floreNket les one-to-one fields, par exemple ?
00:13:44 :Les lésions entre tables de données, en fait.Pardon ?Les lésions entre tables de données.Ouais.On m'aperçoit, oui.C'est qu'il y en a qui se débutent, c'est pour ça, donc...
00:14:01 :Ouais, sur moi, en tout cas, ça va.OK.Ah, je n'ai pas vu...Ouais, OK, c'est bon.Oui, donc, effectivement, je n'ai pas vu le message.
00:14:13 :N'hésitez pas à m'interpeller, si vous voulez.Tous les fichiers, oui, c'est ça, c'est les startups.Merci d'avoir répondu.Donc, oui, c'est ça.Donc, en fait, un auteur, en fait, pourra écrire plusieurs articles.
00:14:26 :Pour one-to-one, c'est un à plusieurs.Il y a un auteur qui écrit plusieurs articles.Un auteur.One-to-one, c'est un à un, et many-to-many, c'est plusieurs à plusieurs.
00:14:37 :Exactement.Donc, là, en gros, un article ne peut avoir qu'un auteur,mais un auteur peut avoir plusieurs articles.Si on avait un one-to-one, ici, c'est...
00:14:46 :Bon, ça aurait été un peu débile, du coup, mais un article...En gros, un auteur peut avoir cassé l'article,et un article peut avoir cassé l'auteur.
00:14:55 :Voilà.Euh...Putain, tiens, rappelle ça.Tac.On va...Donc, la catégorie, ici, on va faire une...On va utiliser notre modèle catégorie,et on délète...
00:15:10 :Voilà, là, c'est pas le but.On va pas s'embêter avec ça.C'est un peu dommage de le mettre en cascade,parce que ça voudrait dire que si on a rattaché un article à une catégorie,qu'on efface la catégorie, ça efface l'article.
00:15:20 :Mais bon.Donc, là, honnêtement, je préférerais faire un truc, je sais pas.Là, j'ai rien configuré.Faire un set null, ici,puis mettre un null, tac, et égal à tout.
00:15:29 :Pourquoi pas.Ouais.OK.Euh...Voilà.Est-ce qu'on va faire un petit champ de datafield, ou quoi ?Non, on va pas se complétifier avec ça.
00:15:40 :Euh...Allez, pour le montrer, quand même, au passage.Created.Tac.At.On pourrait se dire que c'est un datetimefield,dattimefield, ici.Et on peut lui spécifier un auto...
00:15:55 :no...add.Je vais prendre ça chaque fois.C'est add.Hop.Il fait que, quand on écrit un article,la date, l'heure, va s'enseigner automatiquement.Donc, le champ n'apparaît même pas, en fait, dans la ligne Django,mais dans la base, ça va être enregistré à la bonne date et à la bonne heure.
00:16:11 :OK.Euh...On va faire pour être un peu plus visible.Ouh là.Tac.Et on va dire...Euh...On va mettre, ici, le titre.Voilà.
00:16:23 :Donc, là, on a une base avec, entre guillemets,des bons modèles pour...pour s'amuser avec notre...avec HTML.Donc, là,on va créer, ici, une migration.
00:16:38 :Voilà.Et...on va créer, du coup, notre base.Voilà.Donc, là, j'ai bien ma base SQL qui est ici.MySQLite.Euh...Je vais mieux utiliser ça, moi, en personne, en développement,moi, en production.
00:16:53 :Je suis toujours sur du MySQL ou du PostgreSQL.Ça dépend.Euh...Du coup, on va se créer...une suite.Hop.Donc, ça, c'est vraiment la commande magiqueparce que, il n'y a pas longtemps,il y a une boîte qui me disait,ouais, j'arrive pas à te donner accès sur...
00:17:14 :admin sur un projet Django,sauf que j'ai eu accès à sa console.Euh...Et, en fait, j'ai juste eu à faire çaet le mec, je lui ai dit,en fait, j'ai accès à tout.
00:17:22 :Il sait comment ça.Mais j'avais créé un super utilisateur comme ça,donc j'avais accès à tout son projet.Voilà.Donc, là,il t'a fait,ah bon, bah génial, donc j'ai rien à faire.
00:17:31 :Je lui ai dit, non, t'inquiète pas, c'est bon.Donc, là, je me suis attribué,j'ai tous les droits.Donc, là, j'ai vraiment accèsà tout au niveau de l'admin.
00:17:37 :Je suis un super utilisateur.Euh...Voilà.Et...Pardon ?S'il y a une question.Euh...Alors, on va aussi, du coup,dans l'administration,afficher nos...
00:17:53 :Euh...Hop là.Nos...nos modèles.Donc, on avait catégorieet on avait,poste ici.Hop.Euh...site.register.On va avoir catégorie.Tac.Voilà.Et comme ça, en fait,en faisant ça,pour ceux qui commencent,je vais vous montrer.
00:18:15 :Il n'y a pas de problème.Hop.Je vais lancer mon serveur.Euh...J'ai un navigateur ici.OK.Je vais le fermer.Hop là.Donc, en gros,voilà.
00:18:32 :En fait, ici,bon là, c'est mal écritparce que je n'ai pasredéfini la classe méta,mais en gros,j'ai bien catégorie et poste.Si jamais je fais ça,sur catégorie,ici,hop,je n'ai pas accès.
00:18:44 :Donc là, c'est vraimentpour les faire apparaître.Voilà.OK.Donc, euh...On va déjà se créerdeux catégories.Tac.On va se dire,on va avoir une catégorie,on va l'appeler,hop,et on peut en ajouter unequ'on va appeler,hop,laquelle.
00:19:06 :Voilà.Donc là, on a les catégories Djangoet laquelle.Donc maintenant,on vas'amuserà s'écrire des articles,euh...bidons,euh...On va se prendre un...
00:19:17 :Bon, en fait,même le leur aviction,on n'aura pas besoin.On ne va pas se mettre avec ça.On va se direeuh...un article Djangoqu'on va appelereuh...
00:19:27 :super article,super articleDjango,donc on va mettrearticle sur Django,blablabla,et ainsi de suite.Voilà.Donc là, j'ai un article.On va s'en créerdeux, trois comme ça.
00:19:38 :On va se créerun article surWagtail.Donc là, on va mettresuperarticle Wagtail.Et là,blablabla,Wagtail,tac.OK.Donc là, on a deux articles.
00:19:54 :Et on va s'en faire,allez, deux derniers.Euh...On va s'en faire deux derniers.Pour réfléchirpour mon exemple après.Ouais, j'ai envie de faire ça.
00:20:03 :On va l'appeler doncarticle...Alors, ça n'a aucun sensde ce que j'écris,on est d'accord ?Ne vous embêtez,je ne cherche pas à comprendre.
00:20:13 :Euh...Et là, on va mettreDRF,superarticle DRF.Donc là, j'ai appeléarticle sur Django,et on va en créerun deuxième comme ça.
00:20:23 :Wagtail,hop.Article DRF,DRF Wagtail,etsuper articleDRF Wagtail,peu importe, tac.Voilà.Bon, les articles,ils n'ont aucun sens,mais ce n'est pas grave.
00:20:39 :Donc, on a au moins quatre articles,ça va nous servir pour,comme base,pour s'amuser un petit peu.Donc,alors, c'est parti.On va...Hum...
00:20:48 :Je vais le faire dans...Dans quoi ?Dans quoi ? Dans quoi ?Je me soucie,30 secondes, OK.On va le faire comme ça.
00:20:55 :Donc,donc,dans Blog, ici,on va se faire un dossierqu'on va appelerTemplate.C'est là où on va mettrenos fichiers HTML.Merci pour...
00:21:07 :Ah, pas de problème.Hum...On va se faire un dossier,donc un dossier Template.Alors, les dossiers Template,en fait, les Templates sont reconnusquand ils sont dans un dossier Template,c'est une application.
00:21:19 :Donc là, Blog, c'est une application.Donc ça,c'est grâce auxsettings qui sont,là, je remonte là,je suis où ?Template, voilà.Add, here, that, true.
00:21:29 :Sinon, on pourrait spécifierd'autres chemins, ici,dans le...Bon, là, c'est pas le but.Tout ce que vous mettezdans l'applicationqui s'appelle Template,ça sera reconnu.
00:21:37 :Donc là, on va se faire un fichier.On va l'appelerindex.html.Donc,au moins,pour ça,je me suis crééun petit fichier de...un petit Templatetout prêt.
00:21:50 :Hop.Tac.Voilà.Normalement,ça ne crée pas automatiquementun code HTMLde base ?Moi, quand je crée mes...Aussi, après,si tu tapes HTMLdans ta balise,HTML6,ça crée un code tout fait,maisquand je créemon fichier HTML,moi, non.
00:22:12 :Après, tu peux le configurer,ça,normalement.D'accord.Je pense,je pense,quasiment.Ouais, quoi que je ne sais pas.Bref,en général,je tape HTMLet puis,j'ai déjà la base qui est faite.
00:22:26 :D'accord.Bon, là,si je fais ça,parce qu'en plus,comme ça,j'ai déjà tout mon blog,voilà.J'ai déjà çaet puis,j'ai déjà le CDNde HTML6qui est complet dedans.
00:22:38 :Hop.Du coup,on vase fairela vue d'indexetje pensequ'on va pouvoirs'ajouter une boucledirecte.On va faire ça.Hop.On va se créer une vue.
00:22:52 :Merci.Donc,on va bientôt commencer,du coup,à faire du HTML6.Alors,hop,on va se faire une vue.Tac.Et on va dire quoi,cette vue ?
00:23:04 :On va dire que noson est dansModels,Import.C'est bien pour ceuxqui passent tout là,d'ailleurs,ils peuvent vous poser des questionssur commentimporter,entre guillemets,des modules qui sontau même niveau,avec le point,ainsi de suite.
00:23:22 :Je sais qu'il y a une question là-dessus.Bon bref,c'était une petite aparté.OK.Donc,on va avoir tous les postes.Ça va êtreObjects.all
00:23:33 :ici.On va avoir comme çatous nos articles.C'est très simple.Hop.Et pareil,catégories.On va direcatégories.objects.allAlors,un truc qui n'est pas très connumais qui fonctionne bien,il pourrait y avoir,en fait,il y en a qui font comme ça.
00:23:52 :Qui font genreNone.Qui initialisent la variableà None.Moi,ça m'arrive pour avoiren fait un query set vide.Je préfère plus propre.Moi,ce que je fais,c'est que je fais çaici.
00:24:04 :Alors,si tu fais comme ça,hop,vous faites None ici,comme ça.Voilà.Vous pouvez faire comme ça.Bref.Une petite aparté.Ensuite,on va faire un return.
00:24:15 :Render.Return.Render.Et on va direRequest.Tac.On va prendrenotre index.htmlque l'on a créé.Html.Et en contexte,on va...En contexte,on va avoir du coup,on va prendrePost.
00:24:38 :Ici,ça va êtrePost.Nos articles.Eton va avoirCatégories.Voilà.Et on va avoir iciCatégories.Je vais vous montrerpourquoi on fait ça après.
00:24:52 :Euh,voilà.Donc,on va aussieuh,on va aller s'importereuh,l'URL.Du coup,forcément,ça sera mieux.Fromblogpointviewsimport.Je l'ai appelé comment ?
00:25:09 :Index ?J'aime plus.Ouais,j'imagine.Hop,tac.Et on va,hop,on va être à la racine.On va avoir notre vueIndex.Et,euh,le name,on va l'appeler Index.
00:25:25 :Tac.OK.Bon,euh,on va tester un peude savoir si j'ai pas oubliéquelque chose.Tac.OK,voilà.Euh,forcément,vous voyez pas parce queça s'ouvre pas.
00:25:41 :Alors,tac.Il est ouvert là.OK.Donc là,pour l'instant,on a rien.Euh,donc,pour ceux qui connaissent pas,je reprends un petit peu des basesen même temps au passage.
00:25:53 :Pour ceux qui débutent avec Django,euh,ce qu'on va fairequand on est,quand on a ça,on va se créer une,euh,comment dire ?
00:26:01 :Une boucle fort.Ouais,merci,une boucle fort.On va,euh,mettre,euh,on va pas s'embêter,on va la mettre directementdans le,tac.Donc là,on se crée une boucle fort.
00:26:15 :Hop là.On va se dire fort,euh,post,in,post,tac.Hum,bon,on va pas s'embêter.Tac.OK.Je réfléchis en même tempsà ce que je vais faire.
00:26:29 :Euh,inform,tac,et,euh,on va se dire,euh,ouais,aller,on va se faire un petit HD.Hop là.On va se faire,hop,donc pour ce,puis,on a un post.title,
00:26:45 :donc on va avoir le titre,ici,de notre,euh,d'article,qu'on va mettre là.Et,on va se mettre,ça pourrait être sympa,on va se faire un petit pdf,bon,là c'est basique,je suis d'accord,mais c'est pas le but de faire du HTML,je vais faire du HTML,
00:27:00 :surtout là,sur le coup.Hop,on va avoir ici,post,point,euh,catégorie,OK,point name.On traverse la relation,post,point catégorie,point name.
00:27:14 :OK.Tac,donc là,normalement,je vais aller actualiser comme un point,voilà.Donc,on a bien nos articles qui apparaissent.On a tous les articles.
00:27:23 :Donc,c'est là que ça va commencer à devenirun petit peu intéressant.Un peu intéressant.Euh,alors,je réfléchis quand je vais le faire,parce que des,HTML,je les fonce hyper un petit peu.
00:27:33 :On va,on va,on va,on va,je pense qu'on va se faire ça maintenant,dans template,ici,je vais faire un fichier,partials,et,euh,on va l'appeler,euh,ben,il y aura,en fait,euh,voilà,il n'y aura en fait que nos,nos fichiers,euh,nos,nos,
00:27:56 :nos postes ici.Donc,ce qu'on a fait là,il est où ?Hop là.On va couper,on va mettre là,hop,on va mettre là,on va mettre là,on va mettre là,hop.
00:28:08 :OK.Donc,ils sont là,on ne les touche plus.On sait que dans post,ici,on a nos,notre boucle qui est là.OK.Donc,maintenant,ce qu'on va faire,c'est que,par contre,on va vouloir les afficher quand même dans notre page.
00:28:23 :On va se créer,ici,une div.Ouais,c'est ce qu'il y a de mieux à faire,hein,tac,on va se faire,on va se mettre un idée ici,post,post,ça risque de ne pas fonctionner,post,voilà.
00:28:37 :Donc,on a la div,euh,avec post,et on va lui dire,donc,je ne sais pas si tu connais ça avec Django,on va faire un include,ici,et on va lui dire,tu prends,partials,notre dossier partials,post,point,HTML.
00:28:53 :OK.Donc,normalement,si je lance le serveur,j'ai bien fait le boulot,rien n'a changé,voilà,ça ne change rien,ça fonctionne.OK.Donc,parce que là,donc là,on commence vraiment à toucher,à préparer le terrain pour HTML,puisque avec HTML,en fait,le but,ça va être de retourner,
00:29:13 :euh,que cette partie-là,et ne pas recharger toute la page.OK.Euh,donc,en fait,vous allez voir qu'on peut faire,entre guillemets,un peu comme un,pour dire ça un peu grossièrement,un peu comme un framework front,mais je ne vais pas dire ça,parce que ceux qui font vraiment du gros framework front,
00:29:27 :vont dire non,mais,euh,on peut se faire,on peut se faire,faire une certaine action,c'est sympa,quand on va se recharger la page,enfin,vraiment,du,du clic crédité,sans recharger,enfin,sans recharger avec eux,en rechargeant du partiel,vous allez voir,c'est vraiment sympa.
00:29:45 :Euh,donc,je vais commencer par quoi ?Je réfléchis,on va se faire un petit champ de recherche,euh,on va se faire,euh,on va se faire,euh,on va se faire,euh,on va se faire,euh,on va se faire,euh,euh,euh,ok,euh,on va faire ça,
00:30:06 :ok,on va se faire un champ de recherche,maintenant,voilà,c'est quand même mieux,ok,donc,imaginons qu'on veut un,ici,un input,euh,je ne sais pas ce que vous voulez faire,tac,un input,alors,comment ça fonctionne avec htmx ?
00:30:22 :Bon,déjà,on va dire ici,euh,sans parler de htmx,on veut,ici,le type text,alors,pour ceux qui ne savent pas,vous allez voir pourquoi,mais il y en a qui savent déjà,je pense,httpget,donc,là,on arrive au niveau de htmx,donc,on va se faire,
00:30:41 :euh,on va envoyer,en fait,une requête en méthode get,on va dire,euh,quelle url on va utiliser,eh bien,on va utiliser la même urlsur laquelle on était,donc,l'url qu'on a appeléindex,si je retourne ici,on l'a bien appelé index,ici,donc,on reste sur la même url,
00:30:59 :on va lui dire,donc,là,ça devient super intéressant,vous allez voir que c'est,c'est,c'est super bien,httpget,donc,on va pouvoir cibler,en fait,euh,qu'on appelle ça,l'id,voilà,donc,on va lui dire,ici,tu vas me ciblerl'id post,qui est ici,ok,donc,on a l'id post,
00:31:23 :on va dire,c'est quoi,c'est le même temps,ok,donc,pour notre cas,on va dire,on va faire,donc,le trigger,ça va être quoi,non,pardon,hop,là,on va se faire un keyup,euh,surtout,keyup,voilà,à chaque,euh,à chaque,dès qu'on fera,tape sur une touche,
00:31:48 :ça va déclencher une requête,et vu qu'on écrit vite,on peut lui dire,euh,on n'a pas besoin de le faireà chaque changement,on peut se mettre un petit délai,en fait,je ne sais pas,genre,euh,un 500 milligons,par exemple,voilà,et je vous montrerai un attribut,
00:32:03 :je pense,après,et je réfléchis en même temps,euh,tac,ça,ça me paraît pas mal,ok,donc,là,on a un champ de recherche,euh,donc,là,bon,ici,ça ne fera rien pour l'instant,je vais juste faire relancer,run server,je suis là,alors,on est là,
00:32:25 :et mince,ça dédouble tout,voilà,un gros problème,donc,ça, c'est normal,donc,ça dédouble tout,donc,euh,pourquoi,donc,je vais faire un truc,euh,hop,ok,tac,donc,là,ça dédouble tout,donc,en fait,pourquoi ça dédouble tout,parce que,dans ma vue,en fait,je renvoie à chaque fois,
00:32:53 :donc,le,cet élément partiel,mais,en plus,je renvoie tout le template HTML,avec cette vue-là,donc,le,la petite technique,en fait,euh,c'est qu'on va utiliser,euh,qu'en s'appelle,euh,on va utiliser,une condition,on va utiliser,en fait,les headers,pour,pour dire,en gros,si on passe par une requête HTML,
00:33:18 :on va renvoyer qu'un bout de template,donc,déjà,ici,donc,j'aime bien notre requête,ok,on a ça,c'est de là,j'aime bien,ok,donc,ce qu'on va faire,alors,on va utiliser un mot,enfin,un nom de variable assez,euh,parlant,donc,le plus parlant,en général,le search query,
00:33:41 :hop,on va lui dire,récupère-moi,récupère-moi,ici,dans sa requête,search,donc,récupère-moi search,et search,ici,donc,là,hop,lui,il va me le récupérer ici,arrêtez-moi si ça va pas,hein,si,on a une,euh,search query,et bien,on peut se dire,le post,ici,on va modifier la variable,
00:34:08 :on va récupérer notre,euh,notre query set,ici,de base,et on va lui dire,tu vas nous faire un filtre,et,euh,on va filtrer sur quoi,sur le contenu,sur vraiment le contenu de l'article,donc,on appelle ça un look-up,hop,insensible à la casse,et on va lui dire,
00:34:25 :search query,voilà,et,euh,donc,on lui dit ça,donc,hop,on a,on fait une recherche ici,dans notre champ de recherche,on va rentrer dans cette condition-là,tac,on a modifié du coup,la,comment dire,le query set,et du coup,si c'est,alors,si c'est du htmx qu'on fait,
00:34:46 :on peut très bien lui dire,euh,euh,c'est du,euh,on peut lui dire .get,ici,tac,alors,il ne faut pas se glouer dans la syntaxe,c'est h6 en majuscule ici,et,re,request,euh,de toute façon,il n'y a pas de s,on va,ouais,c'est tac,
00:35:06 :comme ça,request,euh,tac,voilà,ça va être ça,h6 request,ouais,c'est comme ça,normalement,h6 request,et là,on lui dit,dans notre partials,tac,post,point,html,et bien sûr,on n'oublie pas,de lui donner,le contexte,et donc,dans notre partials,on a besoin que du,
00:35:31 :que des posts,donc,hop,post,tac,euh,mince,qu'est-ce que j'ai fait,je suis où,euh,ouais,forcément,ça ne va pas fonctionner,euh,post,tac,voilà,je regarde un peu,ce que j'ai écrit,je parle en même temps,donc,j'ai du mal à parler,quand je code,euh,
00:35:55 :tac,ok,donc là,je suis revenu là,euh,en recherche,j'avais écrit quoi,dans mes articles,je ne sais plus ce que j'avais écrit,il y en a,vous avez écrit des rf,je crois,voilà,vous voyez,en fait,là,ça ne recharge plus,que cette partie-là,est-ce que pour l'instant,
00:36:14 :c'est bon,ou je reviens vite fait,sur ce que j'ai fait,c'est bon,pour moi,ça va,il faut le refaire,il n'y a pas de problème,si on prend plus de temps,il n'y a aucun problème,ok,donc,souvenez-vous,alors,juste pour info,des fois,moi je fais ça,
00:36:31 :en fait,je fais deux vues séparées,en gros,dans mon hx,euh,get ici,je vais mettre une autre vue,et en fait,c'est une autre vue,qui va renvoyer qu'un partiel,voilà,mais dans ce cas-là,en fait,moi,je m'embête pas,j'ai l'impression d'avoir trop de vues,et du coup,
00:36:48 :je me dis,ouais,celle-là,fait ça,fait ça,en fait,je trouve ça aussi parlant,d'avoir une vue,où j'ai mon,euh,hx,get,avec le hx request,c'est vraiment pas mal,je trouve,sauf que ça,je l'avais acheté plus tard,en fait,si j'avais fait avant,je l'aurais fait avant,
00:37:08 :mais avant,c'est vraiment tout en deux vues séparées,donc,à savoir,qu'on peut savoir,si on est dans une requête htmx,du coup,si je retourne là,vous voyez,l'url,euh,je fais bien ma recherche,mais l'url,elle change pas,ok,donc là,il y a un attribut qui est intéressant,
00:37:26 :en fait,avec htmx,euh,c'est,en fait,on peut faire un,un push url,voilà,chercher,donc là,ici,vous pouvez très bien rajouter ça,vous dire,euh,hx,push,url,et on va dire,ok,merci,chaque fois que je me charge,tac,si je relance,ok,donc là,
00:37:51 :j'ai mis quoi tout à l'heure,j'ai des rf,oh,je sais plus,hop,et vous voyez,qu'en fait,ça met à jour l'url,qu'avant,ça faisait pas,donc là,comme ça,on peut partager facilement l'url,euh,bon,ça paraît un peu anecdotique,mais,c'est quand même plus propre,je trouve,
00:38:10 :de pouvoir avoir son url,qui se met à jour,euh,c'est le meilleur,quoi,voilà.Euh,donc là,on a,déjà,un petit champ de recherche,qui est assez complet,euh,est-ce que,pour l'instant,ça vous va ?
00:38:26 :Euh,oui,si jamais,il y a des questions,ou,ok,euh,je pense qu'on va pouvoir,alors,du coup,ouais,ça peut être intéressant,à combiner avec ça,hum,ok,euh,on va s'amuser,à faire un truc,euh,euh,ouais,on va faire ça,comme ça,je pense,on va,
00:38:51 :vous vous souvenez,du coup,qu'on a créé des catégories,pour les,les articles,et,en fait,on peut s'en servir,pour créer des checkbox,des checkbox par catégorie,de manière dynamique.
00:39:02 :Donc,si je reviens,dans,dans mon html,ici,donc,on va se mettre en dessous,notre input,ici,on va se mettre un petit hr,tac,voilà.
00:39:14 :Donc,on pourrait très bien,euh,ici,se faire un,comment dire,un,une boucle,voilà,et on va aussi dire,for,catégories,in,catégories,donc,là,on va avoir,euh,une boucle pour la catégorie,alors,je mets toujours la fin de la boucle,tout de suite,parce que,à chaque fois,
00:39:38 :moi,c'est mon truc,c'est mon navigateur,j'ai toujours,en gros,le tag a été oublié,ainsi de suite.Donc,je mets toujours,dès le début,maintenant,voilà.
00:39:50 :Donc,maintenant,on va se dire,pour chaque catégorie,on va vouloir afficher,une petite checkbox,euh,une checkbox pour,comment dire,pour pouvoir cliquer dessus,et choisir,en fait,que certaines catégories.
00:40:03 :Et,on pourra lier,en fait,faire une recherche,entre guillemets,combiner les deux,et,d'ailleurs,la character,elle fait quoi,dans le HTML ?Ça fait un espèce de,attends,hop,ça me fait un espèce de trait,ici,tu vois ?
00:40:21 :Ah,d'accord.Bon,c'est pas beau,comme ça,mais j'ai prendu,Tailwind,du coup,le strap,je ne suis pas en train de plus propre,euh,sur Tailwind,surtout,et ça sera sympa,euh,tac.
00:40:37 :Donc,en fait,on peut combiner,en fait,le,comment dire,le,le fait de faire une recherche,plus la catégorie.On peut combiner les deux.
00:40:47 :Bon,déjà,on va se mettre le checkbox,donc,on va avoir un input,hop,donc,là,on va se dire que,pour chaque,euh,catégorie,on va avoir cette checkbox.
00:41:00 :Donc,on va se dire,type checkbox,on va lui donner un nom,ben,enfin,c'est pas dur,voilà,et on va lui dire,on va lui donner une valeur,euh,c'est bien un value,value,ouais,c'est ça,je réfléchis en même temps,euh,tac,catégorie,id,vous allez voir au fur et à mesure,
00:41:24 :une valeur,et là,c'est apparti,on va lui dire,donc,agilicate,donc,on va lui prendre le,on va lui envoyer,en fait,on va l'envoyer dans la même url,on va,on va même se faire un target,ici,on va,toujours,modifier,notre partiel,et là,euh,on va,
00:41:45 :notre com trigger,on va dire,euh,trigger,voilà,là,on peut lui dire,change,donc,chaque fois que je fais coup,puis change,donc,dès qu'on,enfin,qu'on décoche,ou qu'on coche,simplement,et on va faire comme avec,euh,comme tout à l'heure,on va modifier l'url à chaque,
00:42:06 :à chaque changement,voilà,et,je pense,qu'on peut,euh,est-ce que je fais ça,ouais,je pense qu'on va essayer de sécrire,volontairement,une,un petit bug,ok,je vais juste lui donner une id,ici,et ça va être la catégorie stack,euh,ouais,on va se prendre une id,
00:42:25 :ok,alors,bien sûr,la checkbox,si on fait ça,on va avoir,alors,je vais vous montrer,c'est un peu dommage,une id,donc,on va,bien sûr,lui donner à chaque fois,un label,donc,hop,label,voilà,euh,donc,le label,on va lui mettre,or,ici,et on va lui dire,
00:42:52 :euh,et je vais le faire comme ça,d'ailleurs,ouais,ouais,c'est ça,on va faire ça,on va,de toute façon,on n'a pas le choix,on va lui dire,hop,on va le relier,en fait,à notre,à la checkbox,à chaque fois,hop,et on va lui mettre un nom,
00:43:12 :le label,on va l'appeler,hop,catégorie,point,name,voilà,et je pense qu'ici,ça passerait pas,j'ai appelé comment,euh,catégorie,non,non,ça fait bizarre quand tu fais catégorie,ouais,ben non,euh,voilà,j'ai un doute,euh,là,je suis en français,aussi,euh,bon,c'est de toute façon,
00:43:39 :catégorie,ok,non,j'ai rien dit,excusez-moi,je lui perds,donc,ok,je regarde un peu mes attributs,comment je les ai appelés,là,je l'ai appelé catégorie ID,je vais tout de suite l'appeler pareil,hop,même si ce sera plutôt catégorie,en anglais,bref,c'est pas grave,euh,j'ai commencé à les appeler comme ça,
00:43:59 :maintenant,on va laisser comme ça,j'ai mon ID,ok,ici l'ID,ici le nom,normalement,c'est bon,tac,donc,voilà,là,j'ai le checkbox,donc là,forcément,il n'y a rien qui se passe,puisqu'il faut aller taper dans la vue,tac,donc,si je retourne dans la vue,ici,
00:44:22 :on va remodifier,ce qu'il va falloir faire,c'est,euh,vous vous souvenez,qu'ici,on a mis en name,euh,catégorie,donc,là,on va dire,hum,on va mettre un petit espace ici,on va se dire,du coup,catégories,ici,alors,ce qui est intéressant,c'est qu'on peut se faire,
00:44:43 :euh,un get,ici,un get list,puisqu'ici,en fait,on va,on peut récupérer,plusieurs,plusieurs catégories,on peut encrocher plusieurs,hop,donc là,catégories,catégories,ok,le même catégorie,là,vous voyez,j'ai pas été logique,là,bref,j'aurais pu mettre,bon,j'ai bouclé déjà là-dessus,donc,c'est catégorie,
00:45:13 :c'est pas grave,donc,euh,on récupère celle-ci,bon,l'IA,il serait de renommer ici,ouais,catégorie avec un Y,que ce soit pareil,mais bon,euh,là,en anglais,bon,c'est pas,c'est pas grave,donc,euh,euh,tu as dit,donc là,ouais,t'es d'accord ?
00:45:37 :Non,il y a un Y.Ah,ok,euh,ouais,du coup,effectivement,on va se faire d'accord,on va se faire d'accord,tu vas voir,euh,du coup,le name ici,c'est catégorie,hop,et on le récupère là,donc là,donc là,on a notre search query,hop,et là,
00:46:02 :on va rajouter une autre condition,c'est un peu beaucoup délicat,mais bon,si,non,c'est pas ce que je voulais,merde,euh,tac,donc là,si on a jamais,on récupère quelque chose,on catégorie ici,qu'est-ce qu'on va faire ?
00:46:16 :Et bien,on va le dire,on va remodifier,on va dire,post,euh,je suis où,tac,donc j'ai réfléchi en même temps,si je fais pas une connerie,mais non,pour moi,c'est bon,euh,pour moi,c'est bon,ok,catégorie id,et alors là,il faut savoir,avec Django,
00:46:37 :il existe ça,voilà,en gros,on va récupérer,du coup,pour chaque,euh,chaque article,on va récupérer,en fait,catégorie id in,c'est pour pouvoir récupérer,en fait,plusieurs catégories,est-ce que ça,c'est bon pour le niveaudites-moi,si jamais,il y a un petit,un petit bug,
00:46:58 :euh,c'est nouveau,mais,ça va,ouais,bah,ouais,ouais,c'est,on voit pas forcément souvent,euh,ouais,donc là,ouais,le but,c'est de dire,on va récupérer,en fait,toutes nos catégories,qu'on a cochées,on les envoie ici,directement dedans,notre liste,voilà,et,au fur et à mesure,
00:47:24 :en fait,le poste va se filtrer,on peut le dire comme ça,euh,je pense que je vais pouvoir,euh,faire une petite démo,réfléchir rapidement,ouais,je pense que là,du coup,je vais avoir un truc qui va pas,mais,euh,je vais le laisser comme ça,volontairement,
00:47:40 :parce que,ça permettra de voir,ça,euh,je sais bien,ok,bon,on va lancer,voir,alors,voilà,ok,si je reviens là,notre recherche,ça marche toujours,ou pas ?
00:47:56 :ok,là,j'ai que Django,là,j'ai que Wagtail,ok,alors,ça,c'est bon ?ouais,ouais,ok,imaginons,bon,du coup,euh,quand j'ai tout décoché,forcément,j'ai tout,mais si je coche tout,du coup,je devrais avoir tout aussi,hop,problème,ok,je commence,si je fais ça,
00:48:23 :hop,j'ai que le dernier coché,donc là,gros problème,même si je fais ça,hop,donc là,j'ai DRF,hop,et là,boum,bah,ça efface ma,mon DRF,et ça ne reprend que,ça ne reprend que tous les Django,voilà,vous voyez,donc,il y a,là,il y a un problème,
00:48:45 :donc,euh,ça,j'ai du mal,j'ai du mal à le faire,après,c'est plusieurs fois que j'ai fait,donc,forcément,maintenant,c'est,euh,j'aime bien l'utiliser,donc,on peut très bien dire,dans notre input,ici,d'inclure,euh,comment dire,euh,nos checkbox,on peut aller lui dire,fx,include,
00:49:10 :ici,on va faire un include,hop,et on va prendre,euh,ce centre coché,on va lui dire,name,c'est égal,et là,on prend,glorie,hop,et on prend,on va prendre,forcément,celles qui sont,checker,alors,peut-être que par défaut,il le prendra,mais moi,je suis toujours capable de l'écrire,
00:49:33 :voilà,et,euh,maintenant,on va faire pareil,ici,on va lui dire,hop,tous mes,tous mes fx,en même temps,on peut lui dire,hop là,on peut lui dire,euh,donc là,le name,ça va être,celui d'en haut,c'est search,j'ai appelé search,celui-là,on peut le dire,
00:49:56 :search,de l'inclure,en fait,et forcément,ça ne marchera pas,si je n'ai pas le petit guillemet,hop là,mais,il faut savoir que,du coup,on veut donner la possibilitéde cocher plusieurs checkbox,donc là,on va avoir notre,euh,search,et on peut très bien le dire aussi,
00:50:13 :du coup,hop,name,et on va le dire aussi,à,ok,glory,donc,euh,ici,notre name qui est là,comme ça,on peut récupérer les autresqui sont déjà cochés,et on va le dire aussi,check,alors,euh,pourquoi ici,je ne mets pas,là,je mets catégorie,
00:50:35 :alors,quand on est dans la catégorie,là,je ne mets pas,euh,search,alors qu'on est déjà dans search,parce que search,en fait,on n'a qu'un champ de recherche,le champ de recherche,forcément,j'inclue aussi,le même entre guillemets,parce que je peux avoir plusieurs,plusieurs boutons cochés,
00:50:51 :euh,c'est,c'est bon ou pas,c'est un peu bizarre ce que j'ai dit,non,ça va,c'est,c'est con,oui,ça va,excusez-moi,ok,donc,maintenant,il y a intérêt que ça marche,sinon,je serai toujours un con,alors,c'est parti,euh,putain,j'avais déjà fait la commande,j'avais déjà fait ce programme,
00:51:14 :c'est parti,donc,il n'y a pas de bug,euh,donc,vous savez que sur DRF,j'avais,j'avais,non,ça n'a pas de sens,mais j'avais créé un article DRF,bon,j'ai appris deux fois,je l'ai appris deux fois,c'est pas grave,on voit que la catégorie,c'est Django et Wattel,
00:51:31 :ici,donc,si je coche que Django,normalement,je devrais avoir que celui-là,moment de vérité,nickel,ça marche,si je coche que celui-là,je coche que celui-là,donc,vous voyez,j'ai récupéré les deux,dans le sens aussi,où là,si je fais,là,j'ai que Django,et si je fais ça,
00:51:50 :normalement,j'ai tout le Wattel qui apparaît,ouf,ça marche,voilà,donc,euh,voilà comment,en fait,là,j'ai réussi à combiner,en fait,le,toutes les checkboxes ensemble,plus les champs de recherche,et vous pourrez bien le faireavec plusieurs groupes de,comment dire,plusieurs groupes de,de checkboxes,
00:52:10 :je ne sais pas,genre,je peux avoir très bienplusieurs groupes de checkboxeset les combiner ensemble,là,tac,et là,on pourrait très bien faire pareil,bah,là,en fait,d'ailleurs,c'est un peu ça que j'ai fait avec ça,c'est vraiment,là,on est sur le même principe,
00:52:28 :tac,DRF,je n'ai que la Wattel,hop,donc,la Wattel qui est ici,la Django qui est ici,elle disparaît,voilà,euh,pour résumer,je vais m'arrêter là,je vous arrête de me prendre la tête,on a nos modèles,ok,euh,on a nos modèles,on a,hop là,
00:52:47 :voilà,on va aller dans l'ordre,tac,tac,donc,les modèles,on a une vue d'index,donc,si on ne parle pas de tout ce qui est boutonet checkbox,dans l'index,on retourne,dans son ID,que les postes,qui sont là,ça ne fait qu'afficher les postes,on a un champ de recherche qui s'appelle search,
00:53:07 :dans la vue,donc,dans la vue,dans la recherche htmx,on va retourner,en fait,le query set complet,sauf que,si on a une recherche,on envoie une requête htmx,ici,vers notre vue d'index,donc,il y a le nom name,euh,search,je veux dire,donc,on la récupère ici,
00:53:26 :s'il y a une recherche,hop,on fait un filtre,et si je suis dans une requête,dans une requête htmx,hop,je ne retourne que le partiel,pareil pour celui-là,c'est la même catégorie,hop,et donc,si j'ai bien une catégorie ici,tac,je la récupère ici,enfin,mes catégories,
00:53:43 :hop,je fais,si je rentre dans ce cas-là,pareil,je filtre ici sur la catégorie,et donc,forcément,je ne serai encore dans une requête htmx,donc,je ne retourne que le partiel,voilà,et donc,j'ai juste,le htmx,c'est l'url,ici,on cible,le partiel,et donc,je fais un filtre,
00:54:03 :voilà,le partiel,là,c'est,on pourrait dire qu'à chaque fois qu'on change de,qu'on écrit une,bref,qu'on écrit un caractère,le chrl,c'est pour,mettre à jour l'url qui est là,sinon,ça ne le fait pas du tout,et on inclut,on inclut du coup,les checkbox,pour pouvoir combiner les deux,
00:54:20 :donc,là,c'est pareil,sauf que ici,on va inclure le champ de recherche,et on met la catégorie,ici,elle-même,pour inclure les autres checkbox,ensemble,voilà,est-ce que j'ai bien résumé,est-ce que c'est bon pour vous,ou pas ?
00:54:34 :Oui,c'est bien résumé,en fait,mais,en fait,ça,ça remplace un peu les formulaires,en fait,sur Django,en fait,c'est un peu ça,en fait,ou je me trompe ?
00:54:47 :Ben,moi,après,il y a des projets,où j'ai cumulé,en fait,les formulaires,des forms set factory,alors,je ne sais plus comment je l'ai fait,parce qu'il y a un moment que je l'ai fait,où j'utilisais des formulaires Django,que je combinais avec Htmx,voilà,des checkbox,
00:55:02 :que j'ai fait,comme ça,je ne peux pas passer par les formulaires Django,si tu veux,ici,c'est juste des petits formulaires,que j'ai rajouté,comme ça,mais après,dans tous les cas,je les traite,dans le back-end,donc,il n'y a pas de risque,voilà.
00:55:17 :D'accord,c'est intéressant,c'est pour ça que j'apprécie cette méthode.Mais,tu peux très bien,jouer avec tes,avec tes formulaires,Django,il n'y a aucun problème.
00:55:26 :D'accord.On fera ça,je l'ai déjà fait,mais avec les formset,mes formset,c'est plus,je ne peux plus,faire un peu de gym pour faire ça,mais,il faut que je m'en mette dedans,quoi.
00:55:38 :Donc,voilà,j'espère que ça a passé les questions,j'espère que ça vous a plu,en tout cas.Pour le Htmx,il y a une documentation,pour pouvoir retrouver,tout ce que tu as écrit,et tout ça,pour qu'on puisse,utiliser,oui.
00:55:51 :Il y a le site Htmx,mais,voilà,ils sont ici,page URL.Donc,je n'ai pas montré,là,mais,il y a des sous,par exemple,je n'ai pas fait du swap aussi,au html,mais,il y a des valeurs par défaut,à ça.
00:56:08 :Ça serait intéressant,de tester plusieurs choses,dans,dans les trucs qu'on crée,nous,de tester un peu ça,et de pouvoir,Ah,mais tu as plein de trucs,en plus,tu pourras mettre,le résultat,et tout ça,que ça peut.
00:56:22 :Mais,il y a vraiment,énormément de choses,plein d'attributs,même un petit indicateur,de chargement,c'est marrant,parce que ça,on peut le faire,j'ai déjà essayé,on pourrait très bien mettre,je ne sais pas,c'est où que j'ai vu,voilà,on peut même se mettre,une boîte de dialogue,
00:56:38 :qui apparaît,confirmer,enfin,c'est,on peut tout faire,faire plein de trucs avec.Donc,j'avoue que moi,je passe,je ne fais pas de,de framework front,parce que pour l'instant,je n'en ai pas eu l'utilité,parce que je,dès qu'il fait des choses dynamiques,en fait,je le fais avec ça.
00:56:55 :Donc,là,pour l'instant,pour les projets que je fais,à chaque fois,je fais tout avec ça.C'est super bien,je trouve.Donc,voilà.Convaincu ou pas convaincu ?
00:57:06 :C'est bon ?Je vais bien regarder,bien tester,et après,je verrai,si je suis vraiment convaincu,ou pas.Mais,c'est assez convaincant,quand même.
00:57:16 :On fait beaucoup de choses,avec,pas beaucoup de code,en fait.Et du code,en fait.Donc,c'est pas mal.Ok,super.Est-ce qu'il y a d'autres questions,ou pas ?
00:57:28 :Non,non,c'est intéressant.Antoine,vu que tu as une expérience,pure,enfin,très,très fronte,avec direct,et tout,pour toi,ça te paraît aberrant,ou ça te paraît inutile ?
00:57:42 :Non,c'est que,en fait,je me posais la question,enfin,je me posais plusieurs questions,en fait,en fait,en fait,en fait,je me posais plusieurs questions,en termes de syntaxe,du coup,c'est,c'est assez léger,finalement,vu que tu manipules que des attributs.
00:57:59 :Faut juste pas se mélanger les pinceaux.Non.Mais a priori,ça va.En termes de performance,ça a l'air costaud,aussi.Oui,oui,oui.Après,c'est,si tu dois faire une applicationun peu plus grosse,genre,là,je viens de faire un blog,en fait,en Next.js,
00:58:18 :là,que je viens de remettre à jour,justement,j'ai préparé de réfléchirce que ça donneraitavec HTMXpar rapport à ce que j'ai fait.
00:58:25 :Ouais.Et ça me semblerait êtreun sacré bazar,mais,euh,à maintenir,en fait,sur le temps longet avec plein d'appelsdans tous les sens.
00:58:35 :Mais après,c'est intéressant,je regarderai en détail.Ouais,ça a mis un peu de tempsà m'y mettre moi aussiau début,mais,que j'ai fait un petit peude JavaScriptentre deux,et après,finalement,je découvre çaet je suis revenu là-dessuset,c'est super pratique.
00:58:52 :Après,moi,j'aime bien la séparationback et front,c'est pour mon trucauquel je suis attaché,avoir deux projetspour ne pas fairede bêtises là-dessus.
00:59:01 :Et c'est làoù Symfony,j'ai une petite préférencesur Symfonypour le modèle,du coup,modèle ViewControllercomparé au modèleViewTemplatede Django.Ouais.Parce qu'il y ala couche contrôleurqui permetde ne pas avoirla logiquedans les viewset ça,j'avoue,je préfère.
00:59:21 :Mais après,c'est cool.C'est cool.Il faut que je creuseun peu,mais c'est bien.Merci,en tout cas,c'est hyper intéressant.Ouais,non,c'est normal.
00:59:33 :Mais je ne sais pas,ça appuie à tout le mondeou il y en aqui sont vraimenttrès sceptiques ?Juste pour savoir.Moi,j'ai un peude hasardà situerle fonctionnement,j'avoue.
00:59:45 :J'ai l'impressionde couperce que je faissur un templateet du coup,il faut l'utiliser,quoi.Je pense quesans utilisation,en effet,c'est simple,c'est que des éléments,mais je pensequ'il y en apas malà maîtriseret il fautque ça soitclairdans ta tête
01:00:05 :avantde pouvoirtrouverlesquelsil te fautà tel endroitet ainsi de suite.Là,ça m'a paruun peu compliquécomme çade trouverla première approche.
01:00:18 :C'est la première foisque tu faisais aussi ?Ouais,ouais.Une fois,t'avais déjà fait un trucque j'avais à peineécouté parce quej'étais sur un autre trucen même temps,donc là,j'ai voulu vraiment suivreet c'est la première foisque je le voiset ça me paraît...
01:00:33 :Alors ?Tu vois,de couper tes templateset tout ça,déjà,dès le départ,je fais wow.Ouais.J'aime bien les trucs ça,moi,j'aime bien plutôtavoir tout au même endroit,mais bon,des fois,j'arrête de trois mois,donc je maintienspas mon code,quoi.
01:00:51 :Mais ça m'a paruun peu compliqué.Alors,couper le code comme ça,ouais,ça se fait pas mal,alors pas tout le mondel'occupe,mais ça se faitet il y a même maintenantce qui est...
01:01:02 :Alors ça,Thibault,je sais que c'est un prode ça,c'est Django Coton.C'est encoreun autre level,ça, Django Coton,mais c'est super intéressant.
01:01:11 :J'ai vu sa vidéo,c'est très intéressantaussi à voir,ouais.C'est du partià mesurer,quoi.Moi,j'ai au moinsdeux projetsque j'ai réalisésavec HTMX,et là,je suis en trainde réaliser le troisième,et dans cette vidéo,j'ai découvertde nouveaux attributs,notammenthttps://et https://
01:01:32 :que je ne connaissais pas.C'est sympa,nickel.Ça fait plaisir du coup.Merci.Voilà,le https://,j'avoue,qui...Moi,il m'a reçuquand j'ai découvertcelui-là.
01:01:45 :Il est trop pratique.Ouais,il swap aussiavec le...Comment on appelle ça ?Le...Outer HTML,Inner HTML ?Ouais,la Outer HTML,avec la...
01:01:56 :La...Avec la transitionTrue ou False.Ouais,c'est encoreautre chose,ouais.On pourra voirsi ça remplacetous les élémentspar autre chose,ouais.
01:02:08 :Mais ouais,OK.Eh bien,je suis contentparce que j'ail'impressionque c'estquelque choseque ça vaut le coupde se portervraiment dessuspour voirdans notre code,pour améliorerles codeset tout ça.
01:02:24 :Comprendre bience qu'on faitet faire des chosesqui sont...qui sont mieuxet avec moinsde lignes de codeet tout ça.Ouais,en tout cas,moi,je trouvequ'avec HTMLet Django,plus un peudu DOM,du JavaScript,on peut faireplein de chosescarrément.
01:02:44 :Moi,je suis...Moi,moi,maintenant,je suis inconvaincu.Donc,on...Je ne sais passi aujourd'hui,mais en fait,ça enlèvetout le codeJavaScriptqu'on pourrait fairepour faireces choses-là,en fait.
01:03:02 :Pour fairecette recherche,pour fairece checkbox,ce seraiten JavaScriptet en fait,là,ça nous permetde faire séparerpas sûrementle JavaScript.
01:03:14 :Ça fait...Là,comme c'est rapide,les mentors,c'est rapide,du coup,ça fait beaucoup de chosesqui viennent d'un coupet c'est pour ça,après,je pense,je vais me penchersur la documentationpour bien regarder dessus,pour bien êtred'un plan là-dessuset pouvoir voirjustementles capacités
01:03:33 :que ça peut donner.C'est ça ?Ben,ouais.Après,ça vous intéresseun petit report?Je pourrais l'ouvriret l'envoyer demainsi vous voulez.
01:03:44 :Ah ouais,un report,c'est toujours bien.Après,la limite de ça,c'est que c'est duJS,du coup,sous le capotet que,du coup,t'as moins d'accèsdans le fonddes événements,j'imagine.
01:03:59 :Alors,HTMX,je suis jamais alléextrêmement loindans la customisation.Bon,j'ai des trucspas mal,tu vois,avec,mais derrière,je confirmeque,que,que,c'est du HTMX,du,comment ça s'appelle ?
01:04:17 :Ouais.Merde,déjà,ma scripte,il tombe derrière.Ouais,ouais.C'est du HTMX.js,quoi,qui est derrière.Il tombe.Ouais,mais du coup,c'est vraiment,comme d'habitude,il faut choisirsa technoen fonction du projetet pas l'inverse.
01:04:36 :Et du coup,pour des petits projetsdans tous les sensavec les séparations de codes,c'est vital, quoi.Sinon,tu te paumeset le projet devientimpossible à mainteniret même à s'y retrouver,quoi.
01:04:47 :Et ça,c'est les bonnes pratiquesqui sont donnéesdans tous les frameworkset je pense que c'est une bonne choseparce que sinon,on s'y perd,vraiment.
01:04:55 :Oui,clairement,ouais.Du coup,c'est bien.Des gros projets front,très gros.Les projets que je fais,entre guillemets,bon,il y a du front aussi,mais je peux gérer çaavec HTMX,du Tailwind,du Tango.
01:05:10 :Mais je sais qu'il y en a unqui était à moitié mobile,enfin,qui faisait plein,plein de trucs.Du coup,moi,on m'avait embauchéque pour faire DjangoGrass Remorque,c'est tout.
01:05:21 :Je ne sais pas du tout.Moi,je fais que du Django derrière.Donc,voilà.Après,pour la plupart des projets,moi,je fais donc,en gros,c'est Django,Bootstrap ou Tailwind,ça dépend,plus Tailwindavec HTMX.
01:05:36 :Pardon ?Tu n'as pas encore utiliséDaisy UI ?Si,si,justement,j'utilise Daisy UI,oui.Je l'utilise çaavec V0et en plus,c'est MIA,vu que moi,je n'aime pas trop écriredu HTMLet du CSSou mêmedes classes CSS.
01:05:56 :Je me les fais générer,je fais mes templatescomme ça,puis j'installe Tailwind,Daisy,tac,et puis je me génère aprèsdes templates comme ça.
01:06:04 :J'aime bienTailwind.C'est sympa,je trouve.Tailwind,c'est la folie.La V4,en plus,elle est folle.Sur mon site,moi,je l'ai fait la dernière,j'ai fait un sitepour une communepour une applicationWagtail,et oui,j'ai fait la dernière versionpuis c'est la dernièrede Daisy UI aussi.
01:06:24 :Je l'ai implémentésur un projetpour essayer,c'est chouette.C'est cool.Donc,voilà,écoutez,je suis contentparce que ça a bien fait parlerce petit sujet HTMX.
Aucune occurrence trouvée pour « ».
00:01:22
Introduction à HTMX
00:03:53
Création du projet
00:27:41
Création d'un template partiel
00:30:12
Créer un système de recherche dynamique avec HTMX
00:39:09
Système de filtre avec HTMX et checkbox