Commencez par créer un projet Django s'il n'existe pas déjà. Ensuite, créez une nouvelle application appelée blog
.
django-admin startproject mysite
cd mysite
python manage.py startapp blog
Ajoutez l'application blog
dans le fichier settings.py
du projet pour que Django la reconnaisse :
# mysite/settings.py
INSTALLED_APPS = [
# Autres applications
'blog',
]
Post
Dans le fichier models.py
de l'application blog
, définissez le modèle Post
avec les champs requis.
# blog/models.py
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
published_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
title
représente le titre du post.content
contient le contenu du post.author
est une relation avec le modèle User
de Django pour représenter l'auteur.published_date
stocke la date et l'heure de publication.Pour appliquer les changements dans la base de données, exécutez les commandes suivantes :
python manage.py makemigrations
python manage.py migrate
Dans le fichier views.py
, créez deux vues : une pour afficher la liste de tous les posts et une autre pour afficher les détails d'un post.
# blog/views.py
from django.shortcuts import render, get_object_or_404
from .models import Post
# Vue pour afficher la liste des posts
def post_list(request):
posts = Post.objects.all().order_by('-published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
# Vue pour afficher les détails d'un post
def post_detail(request, post_id):
post = get_object_or_404(Post, id=post_id)
return render(request, 'blog/post_detail.html', {'post': post})
post_list
récupère tous les posts du modèle Post
et les passe au template post_list.html
.post_detail
affiche les détails d'un post spécifique en fonction de son id
.Dans le fichier urls.py
de l'application blog
, définissez les URL correspondantes aux deux vues créées.
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:post_id>/', views.post_detail, name='post_detail'),
]
''
correspond à la vue de la liste des posts.post/<int:post_id>/
permet d'afficher un post spécifique par son id
.N'oubliez pas d'inclure les URL de l'application blog
dans le fichier urls.py
principal du projet :
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
Créez les templates pour la liste des posts et les détails d'un post.
post_list.html
)
<!-- blog/templates/blog/post_list.html -->
<!DOCTYPE html>
<html>
<head>
<title>Liste des posts</title>
</head>
<body>
<h1>Liste des posts</h1>
<ul>
{% for post in posts %}
<li>
<a href="{% url 'post_detail' post.id %}">{{ post.title }}</a>
<p>Publié par {{ post.author }} le {{ post.published_date }}</p>
</li>
{% empty %}
<li>Aucun post disponible.</li>
{% endfor %}
</ul>
</body>
</html>
Template pour les détails d'un post (post_detail.html
)
<!-- blog/templates/blog/post_detail.html -->
<!DOCTYPE html>
<html>
<head>
<title>{{ post.title }}</title>
</head>
<body>
<h1>{{ post.title }}</h1>
<p>Publié par {{ post.author }} le {{ post.published_date }}</p>
<div>{{ post.content }}</div>
<a href="{% url 'post_list' %}">Retour à la liste des posts</a>
</body>
</html>
Lancez le serveur de développement pour tester votre application :
python manage.py runserver
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
Pas encore de commentaires.