- 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
Loudo
18 août 2023 - 18 août 2023 à 14:28
checkConversation résolue
2 réponses
L'ordre des path dans urlspatterne a une importance ?
Bonjour, J'ai bug étrange sur l'url de ma vue "BlogPostCreate" crée précédement. Tout fonctionnait jusqu'ici. J'avais ça comme ordre dans mes urlpatterns : ``` from django.urls import path from posts.views …
00:00:00 :Maintenant qu'on a vu comment afficher tous les articles sur notre page d'accueil, comment créerun article et comment le modifier, on va voir comment afficher un article. Donc comment afficher
00:00:09 :un article au complet puisque pour l'instant on a juste les articles avec les extraits sur la paged'accueil mais on ne peut pas afficher l'entièreté d'un article. Pour ça on va utiliser une vue de
00:00:18 :détail, donc Detail View, que l'on va créer à la suite de nos deux vues ici, donc dans le fichierViews.py. Donc on va importer déjà tout en haut notre vue Detail View cette fois-ci et on va créer
00:00:30 :une classe qui va hériter de ce Detail View. Donc on va l'appeler BlockPostDetail et on va la fairehériter de Detail View. Je vais ensuite là encore renseigner le modèle, donc BlockPost encore une
00:00:42 :fois, c'est toujours le même, et on va changer également le ContextObjectName puisqu'on souhaiteutiliser la chaîne de caractère Post plutôt que la chaîne Object qui est disponible par défautdans les vues de détail. Donc là comme il s'agit d'un article je préfère avoir quelque chose d'un
00:00:55 :peu plus explicite en le spécifiant ici. On va ensuite avoir un template qui va être automatiquementrécupéré par Django, ce template c'est le nom du modèle tout en minuscules, tiré du bas etDetail. Donc je vais le créer ici dans le template, donc dans le dossier TemplatePost, on fait un
00:01:10 :clic droit New, HTML File, donc BlockPost donc le nom du modèle tout en minuscules et Detail.html.Je valide avec Entrée et on va modifier ici ce template. Donc là encore je vais copier le code
00:01:22 :et je vais vous l'expliquer. Donc on va mettre tout ça ici, là encore on étend notre vue donc avecExtend, donc on étend le fichier HTML de base, on remplace le titre, cette fois-ci on utilise donccette variable Post qui est la variable que l'on a modifiée, donc on a modifié notre objet ici avec
00:01:38 :l'attribut ContextObjectName, comme je vous disais si on ne l'avait pas spécifié à la place onutiliserait Object. Dans ce cas-ci on va mettre Post.title, donc on ajoute le titre et on va
00:01:47 :l'afficher dans la balise titre de notre page. Et ensuite on affiche tout simplement l'articledans une balise article avec le titre h1 ici, Post.title, donc on remet l'attribut title et
00:01:57 :on va afficher le contenu de notre article, donc Content. On met un line break ici, donc ça ça vapermettre de tout simplement convertir les sauts de lignes, donc les sauts de lignes SlashN commececi, en sauts de lignes HTML avec la balise br comme ceci qui est un saut de ligne donc break
00:02:12 :en HTML. On va ensuite utiliser la balise safe pour interpréter les balises qu'on pourrait avoir àl'intérieur du contenu de notre article, donc si on avait des balises de paragraphes ou de titreselles seraient correctement affichées sur notre article. Donc on met tout ça à l'intérieur d'un
00:02:27 :div et c'est tout ce qu'on fait ici, donc on a notre vue qui va récupérer ce fichier, qui vautiliser blog post et pour savoir quel blog post il doit afficher, donc quel article il doit afficher,tout ça ça va être fait là encore à partir de l'URL. Donc dans l'URL ici je vais rajouter encore
00:02:43 :une fois un chemin, donc je duplique ma ligne ici et on va récupérer le slug de l'article,donc on va remettre le plus grand et plus petit comme ceci avec le slug et on va le mettre doncdirectement ici en deuxième position, on va mettre string slug, donc ça veut dire que pour accéder à
00:02:58 :un article on va mettre par exemple blog et un cinquième article ici, donc ça c'est le slugd'un article en particulier, donc le dernier que j'ai créé. Donc pour accéder à un article on fait
00:03:08 :tout simplement blog slash et le slug de l'article. Ici à la place de blog post create donc bien sûron va mettre notre blog post detail, donc on importe blog post detail et on le retourne entant que vue ici, donc blog post detail point as view et ici à la place de create on va mettre
00:03:23 :post tout simplement. Donc normalement on a tout ce qu'il faut ici, je vais essayer d'accéder à cecinquième article en validant mon URL ici et là on a bien l'article qui est affiché. Je vais essayer
00:03:33 :d'en afficher un autre un peu plus long pour vous montrer ce que ça donne. Donc si je reviens dansarticle, on va prendre le deuxième article par exemple qui avait le lorem ipsum, donc je prendsle slug, je le mets ici à la place du slug que j'avais et là on a bien donc le titre de l'article.
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.