- 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é
12 février 2023 - 12 février 2023 à 15:11
checkConversation résolue
2 réponses
django get_absolute_url
Re,En fait le get_absolute_url me permet de me passer de la méthode get_success_url de ma vue (dans ce cas j'étais dans une CreateView) ?ça sera l'url vers laquelle on sera …
00:00:00 :Dans cette partie, on va créer une vue qui va nous permettre d'ajouter un article,donc une vue de création.Vous allez voir que dans les prochaines parties,la procédure va être souvent la même.
00:00:10 :On va déjà créer une classe BestView, donc une vue fondée sur les classes.On va ensuite créer un chemin d'URL qui va pointer vers cette vueet on va créer un fichier HTML associéqui va afficher les données retournées par cette vue.
00:00:24 :On va commencer par créer notre vue.La vue, on va la créer dans le fichier Views.pyet on va importer à la suite de ListView ici,la vue CreateView,dont on va hériter pour créer notre classe.
00:00:37 :Ici, à la suite de BlogHome,je vais créer une vue qui va s'appeler BlogPostCreate.Ici, je me mets là, je fais classe BlogPostCreateet on hérite de CreateView.
00:00:50 :Cette classe va nécessiter là encore un modèle,donc on remet notre BlogPostet on va, cette fois-ci, modifier le template que l'on souhaite utiliser.Par défaut, cette vue va chercher un templatequi va être à l'intérieur de notre application,donc à l'intérieur de Postet qui va s'appeler BlogPost-form.html.
00:01:09 :Moi, je trouve que ce n'est pas très explicite,Form ici, je préférais avoir à la place Create.Je vais renseigner ce nom de templatedans un attribut qui s'appelle TemplateName.
00:01:19 :On va dire TemplateName égale à Post-BlogPostCreate.html.On va également spécifier quels champs on souhaite afficherdans le formulaire qui va automatiquement nous être retournépar la vue CreateView.
00:01:32 :Ça, on va le mettre dans un attribut qu'on va appeler Fieldet qui va être à une liste.Cette liste va contenir les champs que l'on souhaite afficher.
00:01:40 :Lors de la création, on ne va souhaiter modifier que le titre et le contenu.Je vais mettre ici Title et Content et c'est tout.On va mettre une virgule ici aprèsau cas où on souhaite rajouter d'autres champs,comme ça, elle sera déjà présente et on pourra juste les ajouter.
00:01:54 :Mais pour l'instant, je ne vais laisser que le champ de titreet le champ de contenu.On va ensuite aller créer ce fichier HTMLà l'intérieur de notre dossier Template.
00:02:03 :Je vais faire un petit peu de place ici.Dans Template, dans Post, on va créer le fichier BlogPostCreate.Donc, clic droit, New, HTML File,et on met BlogPost-Create.
00:02:14 :Je valide.Et là, vous allez voir qu'on va faire quelque chose d'assez similaireà ce qu'on a fait dans BlogPostList,c'est-à-dire qu'on va étendre notre fichier HTML de base.
00:02:23 :Là encore, je vais rajouter déjà le codepuisque c'est un petit peu long à taper tout devant vous.Je vais coller le code ici et vous expliquer ce qu'on fait.
00:02:32 :On étend là encore notre fichier base.html.On modifie la balise titre, donc title ici,et on met Ajouter un article.On rajoute un H1 pour afficher que sur la page,on est sur la page qui permet d'ajouter un article.
00:02:45 :Et ici, on va ajouter un formulaire,le formulaire qui va contenir le titre et le contenuet que l'on va pouvoir soumettre pour créer un article.
00:02:53 :J'ai encadré ici cette variable form qui est la variablequi va nous être retournée automatiquement par le CreateView.C'est par ce qu'on hérite ici de CreateViewque l'on peut accéder au formulairequi va contenir les champs que l'on a spécifiés dans Fields ici.
00:03:06 :Automatiquement, on va avoir un formulaireavec un champ pour le titre et un champ pour le contenu.J'ai ensuite ici le CSRF Token,à ne pas oublier pour valider le formulaire,et un bouton Input, de type Submit ici,qui va me permettre de soumettre le formulaire pour créer l'article.
00:03:23 :Maintenant, ce qu'on va faire, c'est qu'on va relier cette vue à une URL.On va ouvrir le fichier url.py.Je vais importer la vue à la suite, donc blogpost.create,
00:03:33 :et on va dupliquer cette ligne.Je mets une virgule à la suite puisqu'il s'agit d'une liste,donc on a plusieurs chemins à la suite.Et là, on va mettre le nom de l'URL.
00:03:41 :On va mettre Create, tout simplement,et on va retourner notre vue blogpost.create as view.Dans le nom ici, je vais remplacer home par create.Et voilà, j'ai créé mon chemin.
00:03:50 :Quand on va se rendre dans notre blog à blog.create,on va avoir le formulaire qui va nous permettre d'ajouter un article.Je vais vous montrer ça directement sur le site.
00:04:00 :Dans le site, je mets blog.create.Je valide avec Entrée.Et là, j'ai bien mon formulaire qui est affiché.On retrouve le H1, Ajouter un article.
00:04:08 :On a le champ pour le titre et le champ pour le contenu.Si vous essayez de créer à ce stade-ci un article,vous allez avoir une erreur.
00:04:15 :Je vais vous montrer ce qu'on a.Je vais mettre ici un quatrième article.Super contenu.On clique sur Créer.Et là, on a un problème.
00:04:24 :Le problème, c'est qu'on n'a pas d'URLvers laquelle rediriger la vue une fois que l'article est créé.Si on va voir dans l'interface d'administration,donc si je me rends dans slash adminet que je me connecte avec mon utilisateur d'administration,je vais aller voir dans Article ici.
00:04:38 :Et on voit que l'article a bien été créé.Donc l'article a été créé.Notre vue a créé l'article dans la base de données automatiquement.Mais c'est juste ici que la redirection n'a pas fonctionné.
00:04:47 :Pourquoi ?Parce qu'on n'a pas spécifié vers quelle adresse retourner.Donc on pourrait le spécifier directement dans notre vue ici.Mais encore mieux,on peut utiliser cette méthode GetAbsoluteURLqui est utilisée à plusieurs endroits par Djangoet qui va représenter l'URL uniqueassociée à une entrée dans notre base de données.
00:05:05 :Pour ça, dans les postes ici,je vais aller ouvrir le fichier models.py.Et on va rajouter cette méthode à la suite.Donc ici.Il est essentiel qu'elle s'appelle exactement comme ceci,GetAbsoluteURL.
00:05:18 :Et on va ici mettre l'URL vers laquelle on veut rediriger.Pour l'instant, je vais tout simplement rediriger vers la vue d'accueil.Donc la vue d'accueil du blog.
00:05:27 :Je vais faire Return.Et on va utiliser la fonction Reversequi n'est pour l'instant pas importée.Mais on va l'importer tout en haut de notre fichier.
00:05:34 :Donc on va faire FromDjango.URLs.Import Reverse.Cette fonction Reverse va nous permettrede récupérer une URL à partir de son nom.Donc le nom de l'URL, c'est ce qu'on a ici.
00:05:46 :Par exemple, si on veut récupérer l'URLqui mène à la vue d'accueil du blog.Donc cette URL ici.On a le nom Home.Et on a, si vous vous souvenez bien,ce AppName ici qui est égal à Post.
00:05:56 :Donc ça, c'est un espace de nommagequi va nous permettre de spécifier avec ce nom ici.Donc cette chaîne de caractère et cette chaîne de caractère ici.
00:06:03 :Le chemin complet vers cette URL.Donc je vais revenir dans Models ici.Et on va retourner la chaîne de caractère Post.Home.Donc vous voyez ici l'intérêt de l'espace de nommage Post.
00:06:14 :Puisqu'on pourrait avoir plusieurs applicationsqui ont chacune des URLs qui s'appellent Home.Et grâce à cet espace de nommage ici,on pourrait différencier les différentes vues.
00:06:22 :Donc plutôt que directement dans le nom icimettre Post-Home,ce serait une autre façon de faire.Donc d'enlever ici le nom AppNameet de mettre le nom de l'applicationdirectement dans le nom de l'URL.
00:06:32 :Mais vous conviendrez qu'il est plus simplede mettre le nom une fois ici.Donc le nom correspondant à notre applicationou quoi que ce soit qu'on souhaite indiquer.
00:06:40 :Et de mettre ensuite les différents nomsici à l'intérieur de nos URLs.Et en sachant donc que pour accéder à cette vue,il va falloir concaténer les deux.
00:06:47 :Donc le nom de notre application et le nom de l'URL.Donc ça, ça va nous permettre,avec cette GetAbsoluteURL,de rediriger vers la page d'accueil du blog.
00:06:54 :Donc je vais revenir en arrière.Je vais actualiser cette page.Et on va créer un cinquième article.Et vous allez voir que cette fois-ci,on va pouvoir rediriger notre vue automatiquement.
00:07:03 :Donc je vais mettre n'importe quoi ici.Je clique sur Créer.Et automatiquement, on est redirigévers la vue d'accueil du blog.Et on a bien ici un quatrième articleet un cinquième article qui ont été publiés.
00:07:13 :Pour l'instant, l'auteur est inconnu.Donc c'est normal puisque par défaut,et on affiche l'auteur inconnu ici,quand le champ est vide dans la base de données.
00:07:20 :Puisqu'ici, si j'actualise dans l'interface d'administration,on va voir qu'on n'a aucun auteurdans le champ Auteur ici.Donc on a réglé le problème.On a bien notre vue qui nous permet de créer un article.
00:07:31 :Donc en allant sur Blogs slash Create,on peut ajouter un article directementdepuis cette vue.Et si on souhaite modifier le formulaire,il suffit d'aller dans la vue ici,rajouter des fields,donc rajouter des champs directementdans l'attribut Fields.
00:07:44 :Donc on peut mettre par exemple Published ici.Et si j'actualise ma vue,on aura une checkbox qui va nous permettrede spécifier si on souhaite ou nondirectement publier l'article.
00:07:52 :Donc moi, je vais revenir juste avecle title et le content.On va considérer que par défaut,l'article ne sera pas publié.Et par la suite, on verra commentpermettre à l'utilisateur depuisune interface de modification cette fois-ci,donc une Update View,comment modifier d'autres champscomme le champ de publication ici.
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.