- 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 personlive_helpToutes les questions
Gabriel Trouvé
9 mars 2024 - 09 mars 2024 à 11:10
checkConversation résolue
3 réponses
marquer le dossier src comme source
Bonsoir,Suite au chapitre "définir les urls de l'application", environ à 8 minutes il suffit de marquer comme dossier source le dossier src pour que l'erreurfrom blog.views import page_blog ne soit …
00:00:00 :Dans cette vidéo, on va voir comment inclure les URL de notre application de blogà l'intérieur de notre projet Django.Pour l'instant, je suis dans le fichier urls.py de DocBlog
00:00:11 :dans lequel j'ai deux chemins qui sont définis.Le chemin pour la vue de l'index et le chemin pour adminqui est donc l'interface d'administration de Django.
00:00:20 :Ce qu'on va faire, c'est qu'on va créer un fichier URLs pour notre blog.Ce fichier, il n'est pas créé par défaut quand vous créez l'applicationavec la commande StartApp.
00:00:29 :Donc, c'est nous qui allons devoir le créer.Il faut savoir qu'on pourrait tout faire à l'intérieur du fichier d'URL de DocBlog.Ce n'est pas une obligation d'avoir un fichier d'URL par application,mais là encore, c'est une bonne pratique de séparer les choseset vous allez voir comment séparer les URL pour l'application des URL
00:00:46 :de mon projet actuel avec la vue index et la vue admin.Ce que je vais faire, c'est créer un fichier à l'intérieur de mon application blog.
00:00:54 :Je fais un fichier Python que j'appelle url.py.Je valide avec entrée.Et à l'intérieur de ce fichier, je vais créer des URL pour mon blog.
00:01:03 :Avant ça, je vais créer une vue qui va être une vue très simple,juste pour l'exemple, à l'intérieur du fichier views.py de mon application blog.
00:01:11 :Donc ici, je vais faire une vue que je vais appeler index égalementavec le paramètre request.Et on va retourner un HTTP response qui va contenir tout simplement un H1qui va dire le blog.
00:01:24 :Rien de bien compliqué, c'est vraiment juste pour l'exemple.Et on n'oublie pas d'importer HTTP response, donc option entrée sur PyCharm.Je sélectionne le premier et automatiquement, l'import est fait.
00:01:34 :Je peux enlever l'import de Render qui ne me sert à riencar je n'utilise pas ici la fonction Render.Et voilà ma vue qui est créée, la vue index à l'intérieur de mon fichier views.py
00:01:44 :de mon application blog.Maintenant, ce qu'on va faire, c'est créer des chemins d'URLà l'intérieur du fichier URLs de notre blog.Donc ce qu'on va faire ici, c'est à peu près la même choseque ce qu'on a dans notre fichier URLs.py de l'application DocBlog.
00:01:59 :Donc ce que je vais faire, c'est créer une liste qui s'appelle URL patternsà l'intérieur de URL ici, donc URL patternsqui est une liste et qui va contenir les chemins pour mon blog.
00:02:10 :Donc je vais faire un chemin pathet ce chemin, pour l'instant, il va pointer vers une chaîne de caractère vide.Donc là, j'ai quelques imports à faire puisqu'il faut que j'importe déjà la fonction path.
00:02:20 :Donc cet import, je peux le copier ici de mon fichier d'URL de DocBloget je le colle ici pour que la fonction soit bien reconnue.
00:02:27 :Je vais ensuite importer la vue, donc la vue qui est à l'intérieur de views.py.Donc pour ça, je vais faire from.views import indexet on va associer cette vue ici à notre cheminqui est une chaîne de caractère vide et on va lui donner un nom également.
00:02:42 :Donc le nom, on va mettre tout simplement blog-index.Alors le nom ici, vous voyez que je le préfixe avec le nom de l'applicationvu qu'on a déjà ici une URL qui s'appelle index.
00:02:53 :Donc ça, c'est l'URL index de mon application en général.Et ici, j'ai une URL index pour mon blog.Donc ça, c'est une nomenclature, vous n'êtes pas obligé de la suivre.
00:03:02 :Généralement, quand on met un nom, on préfixe avec le nom de l'applicationtout en minuscule avec un tiret pour séparer chaque mot.Donc actuellement, qu'est-ce qui se passe ?
00:03:11 :Eh bien, pas grand-chose parce que je n'ai pas inclus ce fichier d'URLdans mon fichier principal.Si vous vous souvenez bien, Django, il a juste un point d'entrée pour les URLs.
00:03:20 :C'est le point d'entrée qui est défini dans settings.pydans cette variable root-urlconf.Donc Django, quand il va résoudre des chemins d'URL,il va regarder cette variable, il va voir qu'il faut qu'il regardedans docblog.url et dans docblog.url, pour l'instant,
00:03:36 :il y a uniquement deux chemins qui sont définis.Le chemin pour la vue par défaut, donc la vue d'index,et le chemin pour la vue admin avec l'interface d'administration.
00:03:45 :Donc nous, on va devoir inclure à l'intérieur de ce URL patternsnotre fichier blog.urls.py.Pour ça, on va utiliser encore la fonction pathet on va spécifier vers quel chemin on veut redirigerles gens qui veulent voir notre blog.
00:04:00 :Donc nous, on va mettre un chemin blog tout simplement avec un slashet ici, on va inclure notre fichier d'URL.Donc le fichier d'URL, on va l'inclure avec la fonction includeet on va passer à cette fonction, une chaîne de caractèreet la chaîne de caractère, ça va être en fait le module URLs
00:04:16 :de mon application blog à partir de source ici.Donc ça va être tout simplement blog.url.On n'oublie pas de mettre la virgule à la fin puisque là,on a une liste de chemin, donc il faut bien mettre une virgule iciet on va importer cette fonction include puisqu'elle n'est pas importée
00:04:31 :actuellement. Cette fonction, elle se trouve dans le même moduleque la fonction path, donc dans django.urlsdonc on va tout simplement rajouter include ici.Donc là, ce qu'on a fait, c'est tout simplement lier les URLsles unes avec les autres, donc c'est-à-dire que quand on va se rendresur le chemin blog slash, Django va aller voir
00:04:50 :ce qu'il se trouve à l'intérieur de blog.urls et dans blog.urls,pour l'instant, on a un seul chemin, le chemin avec une chaîne de caractère videet il va concaténer ces chemins les uns avec les autres.
00:05:00 :Donc si je relance mon serveur de développement, je vais justeavant fixer une petite erreur puisque là, j'ai mis un S àURL patterns mais il n'y en a pas, donc c'est juste URL patterns comme ceciet vous voyez d'ailleurs que PyCharm était suffisamment intelligentlà encore pour me surligner cette erreur, donc
00:05:15 :URL patterns comme ceci, sinon ça ne fonctionnera pas.Donc je relance mon serveur, je reviens sur le sitedonc là j'ai bien ma page d'accueil qui s'actualiseet si je vais sur slash blog slash,j'ai bien la vue qui m'est retournée, donc avec le http responseet mon titre le blog. Donc là ce qu'il faut bien comprendre
00:05:33 :c'est qu'on a une concaténation entre mon adresse icidonc blog et ma chaîne de caractère ici. Donc là actuellementcomme la chaîne de caractère est vide, il suffit que je me rende surblog slash et rien après le slash pour arriver surla page d'accueil. Si je mettais par contre ici index
00:05:48 :slash, et bien là la page qui renverrait àcette vue d'index, ce serait la concaténation de blogslash et de index slash. Donc làsi je rafraîchis la page en l'état actuel, je vais avoirune erreur 404 puisqu'il n'y a rien à blog slash,par contre si je me rends à blog slash index slash,
00:06:06 :là je retrouve bien ma vue. Donc vous voyezici qu'on a juste séparé nos fichiersd'URL et qu'on les a reliés ensemble grâceà cette fonction include. On n'est pas obligé de faire ça,
00:06:18 :c'est généralement ce qu'on fait, on sépare nos URL et ensuiteon inclut les URL de nos applications avec les cheminsici. Mais là encore il faut vraiment bien comprendre comment tout s'agence.
00:06:27 :Le seul point d'entrée, comme je vous disais, c'est vraiment ce qui est dans Settings ici.Donc c'est vraiment ce point d'entrée docblog.urlset on pourrait très bien ne pas faire un fichier d'URL pour notreapplication. Donc si vous souhaitez tout mettre à l'intérieur
00:06:39 :du fichier URLs ici, je peux vous laisser quelques petites minutessi vous souhaitez le faire vous-même et si vous n'avez pas envie de vous casserla tête vous pouvez rester avec moi et je vais vous montrer comment on peutréagencer tout ce qu'on a fait ici pour n'avoir que
00:06:51 :un fichier, donc urls.py ici, qui renvoie versnotre vue. Donc ce que je vais faire c'est prendre ma vue index et doncplutôt que de la déclarer dans mon fichier urlpatterns ici,je vais l'enlever, pour l'instant je n'ai plus rien à l'intérieur de urlpatternset je vais tout simplement l'ajouter ici. Donc je vais faire
00:07:06 :blog slash index slash et iciplutôt que d'inclure mon fichier blog.urls, je vaisretourner la vue qui correspond à la vue qu'on avait définieici, donc la vue d'index. Et c'est là que vous allez voir qu'il faut commencer
00:07:18 :à bien manipuler Python puisque j'ai déjà une vue qui s'appelleindex. Donc ce que je vais faire c'est que je vais importer depuisblog.views ma vue d'index. Là vous allez
00:07:27 :remarquer que PyCharm nous indique que ce module n'est pas reconnudonc ça c'est normal, c'est parce qu'en fait lui il s'attendà ce qu'on part du dossier source, donc du dossier icipuisque PyCharm lui va partir du dossier racine, donc le dossierdoc blog et donc actuellement si on ne voulait pas avoir d'erreur d'import
00:07:42 :il faudrait faire src.blog.views et là vous voyezqu'on n'a plus l'erreur. Sauf que à l'intérieur de Django,Django lui il ne part pas du dossier doc blog, il va partir du dossiersource qui contient notre dossier blog. Donc nous
00:07:54 :ce qu'il faut faire c'est vraiment juste mettre from blog.viewsimport index. Si on veut résoudre ce problème d'import, il nous suffitde spécifier que ce dossier source doit être un dossier spécifiquedonc pour ça on fait un clic droit, on va dansmark directory as tout en bas et on lui indique source root
00:08:09 :ici. Donc comme ça il va pouvoir ajouter ce dossierdans sa résolution de chemin et là si je reviensdans mon fichier urs.py vous voyez qu'on n'a plus l'erreur d'afficher.
00:08:18 :Le problème actuellement comme je vous disais c'est qu'on adeux vues index. On a la vue index de notreindex ici donc de notre projet doc blog qui est définidans views ici et on a notre vue index qui est définiedans blog.views.py. Donc là il y a
00:08:33 :différentes façons de régler le problème. On pourrait faire un importindex as et dire par exemple qu'on veut l'importeravec un nom différent donc comme blog indexet là comme ça on pourrait avoir deux noms différents et on n'aurait pas de clashentre la vue d'index de doc blog et la vue d'index du blog.
00:08:48 :Donc ça c'est une façon de faire mais vous voyez que là on doitdu coup commencer à gérer les choses avec différents nomset c'est pour ça que c'est intéressant de séparer les choses en différents fichiersd'avoir un fichier d'url pour doc blog et un fichierd'url pour notre application blog comme ça on n'a pas ces
00:09:03 :problèmes de clash entre les noms. Mais c'est tout à fait possiblede faire ça comme ça et là ça va fonctionner de la même façonsi je me rends à cette adresse ici blog slash index slashet que je reviens ici donc dans ma vueque j'actualise la page, là vous voyez qu'on retourne bien la vue en question
00:09:18 :pour vous prouver que c'est bien cette vue que je retourne icije peux mettre le blog de docstringpar exemple, je reviens ici, je rafraîchiset là j'ai bien le blog de docstring qui est affiché. Donc c'est bien
00:09:30 :cette vue ici qui est retournée. Donc vous voyez il y a plein de façons de changer les choseson pourrait également mettre un nom différent directementdans la définition de ma fonction donc l'appeler blogindexcomme ça si je reviens dans mon fichier ici je n'ai plus besoin de faire
00:09:42 :un as, je peux directement l'importer comme cecidonc avec le nom blogindex et là on n'aurait également aucun problèmede conflit entre ma vue d'index et ma vue blogindexdonc c'était un petit peu long mais je trouvais ça importantde vous montrer que là encore ce n'est que des manipulations
00:09:57 :de chemin, de module Python et qu'on peut faireles choses de plusieurs façons. La façon la mieux de fairequand même c'est celle que je vous ai montré au tout début donc si je faisctrl z de revenir en arrière avec le include comme çaon sépare bien les choses, on a nos vues de chaque côté
00:10:12 :on a les vues et les urls au niveau de notre projet dans DocBlogon a les vues et les urls pour notre application bloget comme ça tout ça est bien séparé. Donc là si je reviens
00:10:21 :dans ma vue je vais remettre le nom d'index, si je reviens dans lesvues de DocBlog là je n'ai rien touché donc c'est bon et dansblog.vrs je vais remettre mon pattern ici
00:10:30 :et donc là ce qu'il faut bien comprendre c'est que je peux mettre autant de chemins que je veux iciet tous ces chemins vont être concaténés avec blogici. Alors là il faut bien faire attention d'enlever les choses au bon endroit
00:10:39 :puisqu'actuellement si vous avez bien suivi cette vidéo, si je laisseça en l'état actuel, pour arriver à cette vueici il faudrait rentrer l'url blog slash indexslash index slash. Donc je vais vous montrer ça
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.