- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette vidéo, on va créer un template pour notre application de blogqui va nous permettre de retourner un fichier HTML lorsqu'on se rend sur le blog de notre site.
00:00:10 :Pour l'instant, dans notre vue Index, on retourne tout simplement la chaîne de caractère H1, le blog.On va remplacer tout ça et on va à la place retourner un template.
00:00:19 :Je vais utiliser la fonction Render.En premier, on lui passe Request.En deuxième, on lui passe le nom du template qu'on veut utiliser.Là, on ne l'a pas encore créé, mais on va l'indiquer pour l'instant.
00:00:29 :Dans ce cas-ci, on ne va rien passer au contexte.On veut juste retourner le template.Je vais importer cette fonction Render.En faisant Option Entrée, je valide et on a bien la fonction qui est importée.
00:00:41 :Je vais supprimer le premier import de HTTP response également puisqu'on n'en a plus besoin.Et voilà, on a notre vue qui est bien créée et qui va retourner le template Index.html.
00:00:50 :Ce template, pour l'instant, il n'existe pas.On va le créer dans notre application blog.On va devoir créer un dossier template qui va contenir tous nos templates.
00:00:58 :Là, c'est bien important que ce dossier s'appelle précisément Templates.Je fais un clic droit, New, Directory, et j'appelle mon dossier Templates.Je valide avec Entrée.
00:01:09 :Et à l'intérieur de ce dossier Templates, je vais créer un fichier HTML que je vais appeler Index.Je valide et ici, je vais changer le titre.
00:01:17 :Je vais mettre le blog et on va remettre notre H1 avec le blog.On a créé notre template à l'intérieur d'un dossier Templates.C'est très important parce que c'est ce dossier qui va être reconnu par la configuration,si on va dans le Settings ici, grâce à appdir, ce qui est égal à true.
00:01:35 :Si vous mettez autre chose ici, si vous ne mettez pas Templates mais un autre nom,le template ne sera pas automatiquement reconnu.Si on revient sur notre site et qu'on actualise l'URL avec //,vous voyez qu'on a quelque chose d'assez bizarre qui apparaît.
00:01:51 :On a le template de notre page d'accueil et on n'a même pas la date qui est affichée.C'est le même template que lorsque l'on va sur l'accueil de notre siteoù là, on a bien le bonjour, bienvenue et la date qui est affichée.
00:02:02 :Mais si on va sur //, on a cette même page d'accueil mais sans le titre.Qu'est-ce qui se passe ici ?J'ai fait volontairement l'erreur pour vous expliquer pourquoi on a besoin,quand on crée des dossiers de template comme ici,de créer des sous-dossiers pour bien séparer les choses.
00:02:19 :Le problème, c'est qu'on a deux templates qui s'appellent les deux index.html.Là, si on regarde le chemin que fait Django,il va aller dans le fichier urls.py de DocBlog.
00:02:29 :Jusque-là, c'est bon.Il va aller à Blog, on va se rendre dans le include de blog.urlet dans blog.url, on retourne la vue d'index.La vue d'index, qu'est-ce qu'elle retourne ? Elle retourne index.html.
00:02:42 :Pour vous montrer qu'on passe bien dans cette vue,je vais faire un print, je vais dire le blog.Vous allez voir que c'est bien dans cette vue qu'on passeet non pas dans la vue ici, dans laquelle on retourne également index.html.
00:02:52 :Le problème ici, ce n'est pas le chemin que fait Django.Django, il passe bien dans cette vue et je vais vous le prouver en ouvrant le terminal.
00:02:59 :En retournant sur le blog, j'actualise, je reviens dans le terminalet là, on a bien le blog qui est affiché, qui correspond à ce print.
00:03:06 :Django, il fait le bon chemin.C'est juste que là, on a un conflit entre les noms.Ce qu'il va faire quand il va chercher des templates,il va récupérer tous les fichiers html qui sont à l'intérieur des dossiers templates de notre applicationet des dossiers qu'on aurait mis, si on va dans settings.py, à l'intérieur de cette variable.
00:03:23 :Là, on a mis le dossier docblogs.templateset on a également, grâce à cette option dont je vous ai parlé,le fichier templates qui est contenu à l'intérieur du dossier templatesde toutes nos applications qui sont définies à l'intérieur de cette variable.
00:03:38 :Là, on a l'application blog et Django va aller chercher tous les fichiershtml à l'intérieur de ce dossier templates pour notre application blog.Le problème ici, c'est qu'on a le même nom pour les deux fichiers.
00:03:50 :Ce qu'on fait généralement, c'est qu'on crée un sous-dossier.Là, je vais faire un clic droit et je vais créer un sous-dossierqui va avoir le même nom que notre application.
00:03:59 :Là, je crée un dossier docblogs et je vais glisser ici le fichier html à l'intérieur.Je valide en cliquant sur refactor.Là, j'ai bien le fichier html qui se retrouve à l'intérieur de docblogs.
00:04:10 :Je fais la même chose pour mon application blog ici.Je crée un nouveau dossier que j'appelle blog.Je glisse mon fichier à l'intérieur de ce dossier.
00:04:18 :Je valide avec refactor.Maintenant, ce que l'on peut faire, c'est si l'on revient dans nos fichiers de vue,non pas seulement indiquer index.html, mais indiquer blog.index.html.
00:04:30 :Là, je vais tout simplement rajouter blog.index.html.Si je retourne dans le fichier views de docblogs, je vais faire la même chose,sauf que cette fois-ci, je vais mettre docblogs.index.html.
00:04:42 :Comme ça, on n'aura plus de conflit.Si je reviens ici sur mon blog et que j'actualise,là, on a bien notre template pour le blog qui est affiché.
00:04:50 :Et si je reviens sur la racine du site, on a bien le template de la racine avec la date qui est affichée.Vous voyez que c'est très important de séparer les choses comme ça.
00:05:00 :Là encore, il faut bien comprendre ce qu'on fait.Vous n'êtes pas obligé de créer un sous-dossier.C'est juste qu'en créant le sous-dossier, ça nous permet d'avoir un nom ici dans la chaîne de caractère qui est différente.
00:05:10 :On pourrait très bien ne pas créer ce sous-dossier et tout garder à l'intérieur du dossier templates,mais dans ce cas-ci, il faudrait avoir des noms différents.
00:05:17 :Donc si je n'avais pas le dossier blog ici, je pourrais également m'en sortir en renommant ce fichier indexpour par exemple avoir blog-index et ici docblog-index.
00:05:28 :Ça fonctionnerait de la même façon, mais généralement, on aime bien avoir des noms de fichiers qui restent assez simples.Et le fait d'avoir des sous-dossiers comme ceci, ça permet d'avoir une structure de dossier qui reste intelligible.
00:05:38 :Et comme ça, on peut séparer également nos vues en rajoutant tout simplement blog- dans ce cas-ci et docblog- dans ce cas-ci.Donc j'espère que c'est assez clair.
00:05:47 :Je voulais vraiment vous montrer le problème qu'on a généralementparce que je vois beaucoup de tutoriels qui vous disent directement de créer des sous-dossierset on ne comprend pas forcément pourquoi.
00:05:56 :Ça fait un peu bizarre effectivement au début d'avoir blog, template, blog et ensuite notre template.Donc on pourrait penser que ce sous-dossier ici n'est pas important.
00:06:04 :Mais vous voyez qu'en fait, ce qui est important ici, c'est surtout de ne pas avoir de conflits entre les noms.Donc l'important, ce n'est pas tant d'avoir un sous-dossier, mais de bien comprendre ce que l'on faitpour ainsi éviter d'avoir des conflits entre les noms des différents templates que l'on utilise.
00:06:18 :Avant de terminer cette vidéo, je veux juste vous montrer également dans settings.Si je désactive appdears, donc ici je mets false, vous allez voir que le template ne sera plus reconnu.
00:06:27 :Donc si je reviens sur ma vue, que je vais dans slash blog slash et que je valide,là vous voyez que le template n'est plus reconnu.
00:06:35 :Donc c'est vraiment avec cette configuration ici qui est à true,qu'on va avoir la possibilité de détecter automatiquement les fichiers qui sont à l'intérieur du dossier template.
00:06:44 :De la même façon, si je fais un clic droit et que je renomme ce dossier,que je mets par exemple template sans le S, donc je valide en cliquant sur refactor,je reviens sur mon application ici, j'actualise et là de la même façon le template n'est pas trouvé,même si cette variable est mise à true.
00:07:01 :Donc vraiment ici ce qui fait que le template est trouvé automatiquement sans qu'on ait besoin de l'ajoutercomme on l'avait fait précédemment ici dans la variable de dares,c'est à la fois que l'on a appdears ici qui est égal à true,également que le dossier s'appelle bien templates avec un S, donc n'oubliez pas le S,
00:07:17 :et également qu'on a notre application qui est déclarée ici.De la même façon, si j'enlève le blog ici dans installed app,que je reviens ici dans mon navigateur et que j'actualise la page,là encore le template n'est pas trouvé.
00:07:29 :Donc il y a vraiment trois choses qui sont nécessaires pour que ça fonctionne,le nom de l'application que vous devez ajouter vous-même dans cette liste,cette option qui normalement par défaut est à true, mais je préfère quand même vous en parlerparce que c'est vraiment avec cette option que les templates sont reconnus automatiquement,
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.