- 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 :Maintenant qu'on a remplacé notre vue blog post ici qui retournait tous les articles ou dans ce cas-ci les articles publiésdans notre fichier ici, donc dans notre fichier index.html, on va voir comment on peut récupérer cette fois-ci un article en particulier.
00:00:13 :Donc pour ça on va utiliser une autre vue qui est la vue de détails, en anglais detail view.Donc je vais la créer juste en dessous ici, en dessous de ma classeblog in text view, qui nous permettait de récupérer tous les articles publiés et de les afficher donc dans ce template.
00:00:27 :Donc je vais faire une classe que je vais appeler blog post detail view qui va hériter de detail view.Donc là encore detail view qui est contenu à l'intérieur de django.views.generic.
00:00:37 :Et ici qu'est ce qu'on va faire ? Eh bien on va là encore spécifier que pour le modèle on souhaite utiliser notre blog postet on va également modifier le template qui est utilisé par défaut.
00:00:47 :Donc je vais pas le modifier tout de suite, j'ai déjà en fait utilisé cette classedans mon url et je vais vous montrer l'erreur qu'on a et on va voir comment on peut modifier le template.
00:00:55 :Donc vous allez voir c'est en fait très similaire à ça, on va utiliser là encore template name.Donc dans urls ici je vais importer à la place de blog post mon blog post detail view.
00:01:05 :Et là plutôt que de retourner donc ma fonction blog post, je vais retourner ma classe en temps que vue.Donc blog post detail view as view.
00:01:13 :Donc maintenant je vais aller voir ici, donc je vais actualiser ma page, là j'ai bien tous mes articles de blog.Je vais juste ici dans ma vue enlever le filter, je vais en fait remettremon modèle qui est égal à blog post, comme ça on va avoir tous les articles de blog et non pas ceux qui sont publiés uniquement.
00:01:28 :Donc je reviens, j'actualise, là j'ai bien tous les articles de blog.Et maintenant si je clique sur cet article, vous allez voir qu'on a cette erreur encore une fois, donc template does not exist.
00:01:37 :Donc là c'est à peu près la même chose que ce qu'on avait pour les list view, c'est à dire queDjango va automatiquement aller chercher un template qui dans ce cas-ci se trouve dans le dossierde l'application blog et avec un nom qui est donc le nom de mon modèle tout en minuscule et tiré du bas detail.
00:01:52 :Donc là encore je ne vais pas créer ce template puisque moi j'ai déjà dans mon projet un fichierqui est le fichier post.html ici qui me permet d'afficher le contenu de mon post.
00:02:02 :Donc à la place ce que je vais faire c'est que ici dans ma classe je vais spécifier que pour template nameje souhaite utiliser blog slash post.html.
00:02:11 :Donc là encore vous voyez une fois qu'on commence à s'y faire, une fois qu'on commence à connaître les attributs,c'est un peu toujours la même chose donc vraiment il ne faut pas avoir peur des vues basées sur les classes.
00:02:19 :Donc là je retourne post.html et si j'actualise,vous voyez que cette fois-ci on n'a plus d'erreur mais on n'a pas non plus le contenude notre article. Alors là encore c'est pareil qu'avec le list view puisque quand on va dans post.html
00:02:32 :actuellement ici j'utilise la variable post et donc ça marchait dans le cas de ma vue ici basée sur cette fonction puisqu'on utilisaitce nom de variable, donc post ici, que l'on retournait dans notre contexte.
00:02:42 :Sauf que là par défaut avec une vue detail view, on va avoir le nomobject qui va être utilisé. Donc si je reviens dans post.html par défaut on va avoir object donc là encore c'est comme avec notre vue
00:02:54 :en liste, dans les vues en liste on avait object list pour récupérertoutes les entrées dans notre base de données et bien là pour un objet en particulier on va utiliser object. Donc là je vais remplacer
00:03:03 :partout où j'avais post je vais mettre object à la place et si j'actualise vous voyez que j'ai bien le contenu, le titre etcqui sont correctement affichés. Donc là encore ne vous inquiétez pas on peut tout à fait modifier
00:03:14 :le nom qui est affiché. Donc par défaut Django va là encore utiliserle nom du modèle en minuscule donc je peux utiliser blog post tout en minuscule comme ça à la place de object et ça vamarcher de la même façon. Donc j'actualise et là j'ai toujours mon article qui est affiché.
00:03:28 :Et comme avec le list view on peut là encore utiliser context object namedonc je vais le copier je vais le mettre ici et à la place de post avec un s je mets post tout simplement donccomme on l'avait ici dans notre vue avec la fonction donc là je dis que le context object name est égal à post
00:03:44 :et donc si je reviens dans post.html je peux revenir en fait à mon fichier d'origine donc qui utilisait cette variable postdonc cette variable ici et donc là vu qu'on a modifié le context object name si je reviens ici et que j'actualisej'ai toujours le contenu de l'article qui est affiché. Là bien sûr je peux mettre n'importe quoi donc je pourrais mettre Patrick et c'est
00:04:03 :Patrick qui serait utilisé à la place de post. C'est vraiment juste un nom de variable donc là j'actualiseet là j'ai toujours bien mon article qui est affiché.
00:04:10 :Ok donc vous voyez que là encore avec juste quelques lignes de code on a tout qui est fait pour nous on a automatiquementle modèle qui est récupéré donc le bon modèle en fonction de ce que j'avais dans mon url donc là vous voyez qu'il faitautomatiquement la jonction entre le paramètre de mon url
00:04:25 :et là dans ce cas-ci c'est vraiment la grosse différence par rapport à la vue basée sur la fonction puisque dans la fonction ici jedevais récupérer le slug et ensuite utiliser ce paramètre slug pour aller filtrer en fait le post que je souhaitais récupérer.
00:04:38 :Dans ce cas-ci tout est fait automatiquement on passe notre classe en tant que vue on a un paramètre slug ici etautomatiquement Django va reconnaître que dans le modèle que je passe ici donc dans le modèle blog postj'ai un slug donc il va utiliser ce slug pour aller récupérer mon article de blog et le passer directement à mon fichier de template.
00:04:57 :Donc vraiment vous voyez que petit à petit comme ça on a des choses qui nous simplifient la vieet plus on va avancer dans ces vues crudes donc les vues qui nous permettent de créer, de récupérer, de mettre à jour et de supprimerdes données plus vous allez voir en fait que c'est beaucoup plus
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.