logo oujood
🔍

Les vues dans Django

Une vue Django est une fonction Python qui reçoit une requête HTTP et renvoie une réponse HTTP. C'est elle qui décide quoi afficher, quelles données récupérer, et quel template utiliser. Dans ce chapitre, vous écrivez votre première vue dans l'application membres et vous la branchez sur une URL.

OUJOOD.COM

Ce que fait une vue Django

Une vue est une fonction Python ordinaire avec une contrainte : elle reçoit un objet request en paramètre et doit retourner un objet réponse. Entre les deux, vous faites ce que vous voulez — interroger la base de données, calculer quelque chose, préparer des données pour un template.

Si vous venez d'un framework MVC classique (Rails, Laravel, ASP.NET), attention au décalage de terminologie : les views Django correspondent aux contrôleurs en MVC. Les templates Django correspondent aux views en MVC. C'est une source de confusion fréquente au départ.

Les vues vivent dans un fichier views.py à la racine de chaque application. Django génère ce fichier automatiquement quand vous créez une application avec startapp.

Écrire la première vue de l'application membres

Ouvrez membres/views.py. Django l'a créé avec ce contenu par défaut :

  📋 Copier le code

from django.shortcuts import render

# Create your views here.

Ajoutez l'import de HttpResponse et écrivez la fonction index :

  📋 Copier le code

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    # Retourne une réponse texte brute sans template
    return HttpResponse("Bonjour le monde !")

La fonction index reçoit l'objet request — Django le passe automatiquement. Elle retourne un HttpResponse contenant du texte brut. Pour l'instant c'est suffisant : aucun template, aucune base de données, juste une réponse directe.

Créer le fichier urls.py de l'application

Chaque application Django a son propre fichier d'URLs. Django ne le génère pas automatiquement — c'est à vous de le créer. Dans le dossier membres/, créez un fichier urls.py et ajoutez :

  📋 Copier le code

from django.urls import path
from . import views

urlpatterns = [
    # http://localhost:8000/membres/ → appelle views.index()
    path('', views.index, name='index'),
]

Le from . import views importe le fichier views.py du dossier courant (l'application membres). Le chemin vide '' signifie que cette vue répond à la racine de l'URL de l'application — /membres/ dans ce cas.

Brancher l'application sur le projet principal

Le fichier membres/urls.py gère les URLs internes à l'application. Pour que Django le consulte, il faut l'inclure dans le fichier monmonde/urls.py qui est le routeur principal du projet.

Ouvrez monmonde/urls.py et modifiez-le ainsi :

  📋 Copier le code

from django.contrib import admin
# include() permet de déléguer un préfixe d'URL à un autre fichier urls.py
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    # Toute URL commençant par "membres/" est gérée par membres/urls.py
    path('membres/', include('membres.urls')),
]

La fonction include() dit à Django : "pour toute URL qui commence par membres/, va lire le fichier membres/urls.py et laisse-le gérer la suite." C'est le mécanisme standard pour organiser les URLs d'un projet multi-applications.

Tester la vue dans le navigateur

Lancez le serveur depuis le dossier qui contient manage.py :

  📋 Copier le code

python manage.py runserver

Ouvrez http://127.0.0.1:8000/membres/ dans votre navigateur. Le texte "Bonjour le monde !" s'affiche. La vue fonctionne, le routage est en place.

Pour l'instant, la vue renvoie du texte brut via HttpResponse. Dans le chapitre suivant, vous allez créer un vrai template HTML et utiliser la fonction render() pour transmettre des données dynamiques à la page.

Par carabde | Mis à jour le 05 mai 2025