Exercice 1 Django Framework Corrigé S1
1. Créer une nouvelle application Django
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',
]
2. Créer le modèle 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
- Le champ
titlereprésente le titre du post. - Le champ
contentcontient le contenu du post. - Le champ
authorest une relation avec le modèleUserde Django pour représenter l'auteur. - Le champ
published_datestocke la date et l'heure de publication.
3. Migrer la base de données
Pour appliquer les changements dans la base de données, exécutez les commandes suivantes :
python manage.py makemigrations
python manage.py migrate
4. Créer les vues
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})
- La vue
post_listrécupère tous les posts du modèlePostet les passe au templatepost_list.html. - La vue
post_detailaffiche les détails d'un post spécifique en fonction de sonid.
5. Configurer les URL
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'),
]
- L'URL
''correspond à la vue de la liste des posts. - L'URL
post/<int:post_id>/permet d'afficher un post spécifique par sonid.
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')),
]
6. Créer les templates HTML
Créez les templates pour la liste des posts et les détails d'un post.
Template pour la liste des posts (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>
7. Tester l'application
Lancez le serveur de développement pour tester votre application :
python manage.py runserver
Pas encore de commentaires.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.