TP Django: Création d'un blog django

django-blog-users-authors-posts-comments-foreignkey

Dans ce tutoriel, nous allons voir pas à pas comment créer un blog django complet permettant de gérer les utilisateurs (users & authors) et qui contient deux catégories des utilisateurs:

  1. les utilisateurs enregistés qui aurons la possibilité de lire et commenter les articles
  2. les auteurs (authors) qui aurons la possibilité de lire, écrire et commenter les articles

shema relationnel

1. Création du projet principal

Avant de créer le blog django, nous devons au préalable:

  1. créer un projet nommons le mysite à titre d'exemple
  2. créer une application account pour gérer les utilisateurs
  3. créer et installer un template bootstrap

Pour la création du template, pous pouvez créer votre propre template Bootstrap si vous maîtriser le langage HTML, CSS,... Si non veuillez en télécharger un, vous pouvez aussi utiliser notre propre template Bootstrap via le lien suivant:  https://drive.google.com/file/d/14owvtBXNOOgnAgJtiA5fM_KNCIfwtaTO/view?usp=drive_link

• Copier ensuite le fichier base.html à la racine du dossier template et le dossier static à la racine de votre projet

• Créer ensuite un fichier template/index.html qui sera utilisé comme home page et y ajouter le code d'héritage du template de base:

1.2 Gestion des fichiers statiques & médias

Au niveau du fichier mysite/settings.py ajouter le code suivant:

1.3 Configuration de la page d'accueil avec la classe TemplateView

Comme son nom l'indique, la classe TemplateView permet de créer et configurer une vue directement sur un template via la syntaxe:

Nous pouvons donc l'utiliser pour configurer notre page d'accueil au niveau du fichier urls.py du projet:




2 Gestion des utilisateurs

Pour la géstion des utilisateurs veuillez voir le tutoriel gestion des utilisateurs django: https://www.tresfacile.net/gestion-des-utilisateurs-django/

3. Création de l'application blog

De la même manière comme fait pour l'application accounts, créons maintenant une application nommée blog, destinées à la publication des articles (posts) et commentaires. Chaque article sera caractérisé par un identifiant id comme clé primaire(primary key) et une clé étrangère ( foreignkey) id_users qui fait référence à l'identifiant de l'utilisateur (author) qui l'a publié, a cet effet exécutons la commande suivante qui créera notre application blog:

Enregistrons ensuite l'application blog au niveau du fichier settings.py:

4. Création du modèle du blog

Créez ensuite le modèle du blog qui va contenir les champs: title, slug, author, content...

Il nécessaire maintenant d'effectuer les commandes de migrations afin de créer automatiquement la table sql posts au niveau du modèle de la base de donnée: à cet effet, exécutez successivement les deux commandes:

et ensuite:

5. Affichage du blog au niveau de la zone admin

Et afin que le modèle Post soit disponible et administrable au niveau de la zone admin, on doit le déclarer au niveau du fichier mysite/blog/admin.py:

Maintenant en se connectant à votre zone admin via le lien: http://127.0.0.1:8000/admin/ vous pouvez voir votre blog, profitez donc pour y ajouter quelques posts afin que le blog ne soit pas vide:




6. Création du view du blog

Pour créer un view performant d'une façon assez simple, nous allons utiliser les vues génériques basées sur les classes: ListView, DetailView, UpdateView, CreateView, DeleteView:

7. Mise à jours du système des urls

Nous devons maintenant mettre à jour le système des urls en créant un fichier mysite/blog/urls et y ajouter le code suivant:

On doit aussi mettre à jour le système des urls du projet principal en ajoutant le chemin:

Voici le code final du fichier mysite/urls:

8. Configuration au niveau du template

Nous utilisons ici les vues génériques qui exigent certaines règles à respecter, les fichiers du template doivent être organisés de la façon suivante: au sein du répertoire template on doit créer un sous répertoire qui porte le même nom que l'application django et au sein de ce dernier les noms des fichiers doivent être de la forme : [model_name]_...Comme le montre le schéma suivant:

Ainsi dans notre cas on a:

  1. app_name = blog
  2. model_name = post

Et par suite nous aurons la structure suivante:

  1. post_confirm_delete.html : s'occupera de la suppression d'un article avec un message de confirmation
  2. post_detail.html : s'occupera de l'affichage d'un article en détail
  3. post_form.html : s'occupera du formulaire à double fonctionnalité : l'édition et l'ajout d'un nouveau article.
  4. post_list.html : s'occupera de l'affichage de la liste des articles

8.1 Affichage de la liste des articles

TP pratique Django - création d'un blog django-users-authors-articles-comment-foreignkey

8.2 Affichage des articles en détails

8.3 Formulaire d'ajout d'un article

Remarque. pour l'ajout, l'édition ou la suppression d'un article, l'utilisateur qui réalise l'action doit posséder les droits nécessaires: administrator author... Mais ici pour simplifier la tâche, nous allons le traiter spontanément et laisser le truc des droits d'utilisateurs au second paragraphe!




8.4 Page de suppression d'un article

Nous avons déjà parlé des vues génériques et indiqué que la page de suppression des articles (posts) sera nommée: template/blog/post_confirm_delete.html

9 Gérer les permissions

9.1 Gestion des droits d'utilisateurs

Jusque ici on pas encore touché à la gestion des droits d'utilisateurs: n'importe quel utilisateur qu'il soit connecté ou non, il peut ajouter, éditer ou supprimer des article, ce qui n'est pas logique. A cet effet nous devons gérer et attribuer des droits aux utilisateurs au sein de la zone principale d'administration. Nous allons à titre d'exemple créer via la zone admin un groupe d'auteurs et d'ajouter quelque utilisateurs à ce groupe. Ainsi seulement les utilisateurs ajoutés à ce groupe aurons la possibilité d'ajouter ou modifier des articles.

Au sein de la zone admin dans la rubrique Groups, cliquez sur Add:

Ensuite dans la zone name choisissez un nom pour votre groupe à titre d'exemple : author et dans la zone Chosen permission sélectionnez les droits pour le modèle post: can add post, can change post...

Nous allons ensuite attribuer le rôle d'auteur à quelque utilisateurs afin de leurs donner le droit d'ajout, d'édition ou suppression d'articles. A cet effet, au niveau de la zone admin, cliquez sur l'utilisateur auquel vous souhaitez attribuer ce droit et puis dans la zone Chosen groups ajouter le groupe author:

Dans ce cas l'utilisateur dont le nom d'utilisateur robert possède les droits d'ajout et de suppression d'articles.

10 Gérer les permissions au niveau du template

10.1 Ajout d'articles au niveau du template

A ce niveau là si l'utilisateur est connecté et possède le droit d'ajout darticles, le système lui affiche le formulaire d'ajout sans problème ! Et s'il est connecté sous un autre nom d'utilisateur qui n'appartient pas au groupe author, le système lui affiche le message suivant:

You don't have permission to add post !

Pour les autres rubriques : edit ou delete post, la même procédure sera appliquée:




 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply