Les Vues en Django (views.py)

Article publié le et mis à jour le .

Dans l’article précédent, on a vu comment installer django et créer un projet (Partie 1).

Maintenant, nous allons aborder un concept essentiel en Django : les vues. Dans cet article, nous allons voir comment créer et configurer vos premières vues, étape par étape.

Qu’est-ce Qu’une Vue dans Django ?

Dans Django, une vue est une fonction ou une classe qui traite les requêtes HTTP et retourne une réponse, souvent sous forme de page HTML. Chaque fois qu’un utilisateur interagit avec votre site web, comme en accédant à une page, Django utilise une vue pour déterminer comment traiter cette requête et quoi afficher.

Les vues sont le cœur de la logique métier dans une application Django. Elles connectent les modèles (la base de données) aux templates (les pages HTML), permettant ainsi d’afficher les données dynamiquement.

Les Types de Vues dans Django : Fonctions vs Classes

Django propose deux façons de créer des vues :

  • Les vues basées sur les fonctions (Function-based views ou FBV) : Ce sont des fonctions Python standard qui prennent une requête HTTP en paramètre et renvoient une réponse. Elles sont simples et directes à utiliser pour des vues basiques.
  • Les vues basées sur les classes (Class-based views ou CBV) : Ces vues encapsulent la logique de traitement des requêtes dans des classes, offrant plus de flexibilité et permettant de réutiliser du code. Elles sont particulièrement utiles pour les applications complexes.

Dans cet article, nous nous concentrerons sur les vues basées sur les fonctions, qui sont souvent plus faciles à comprendre pour les débutants.

Créer une Vue Simple dans Django

Voyons maintenant comment créer une vue simple dans Django. Pour cela, nous allons ouvrir le fichier views.py de notre application Django et y ajouter une nouvelle fonction.

Voici un exemple de vue simple :

from django.http import HttpResponse

def index(request):
    return HttpResponse("Bienvenue sur ma première vue Django !")

Cette fonction prend en paramètre un objet request (qui contient toutes les informations sur la requête HTTP de l’utilisateur) et renvoie une réponse avec un simple message texte.

Configurer les URLs pour Afficher Votre Vue

Une fois la vue créée, il faut dire à Django sur quelle URL elle doit être accessible. Cela se fait en configurant les URLs dans le fichier urls.py de votre projet.

Voici un exemple de configuration d’URL pour afficher la vue index que nous venons de créer :

from django.urls import path
from .views import index

urlpatterns = [
    path('', index, name='index'),
]

Ici, nous associons la vue index à l’URL de base (''), ce qui signifie que la vue sera affichée lorsque vous accéderez à l’adresse http://127.0.0.1:8000/.

Étendre les Fonctionnalités de Votre Vue Django

Une fois que vous avez configuré une vue de base, vous pouvez commencer à lui ajouter de la logique. Par exemple, au lieu de retourner un simple message texte, vous pouvez utiliser un template HTML pour afficher une page plus élaborée.

Pour ce faire, il vous suffit de remplacer la fonction HttpResponse par render, qui permet de rendre un template HTML :

from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

Dans cet exemple, Django cherchera un fichier index.html dans le dossier templates de votre projet, et l’affichera lorsque l’utilisateur accède à l’URL associée.

Vous pouvez également passer des variables au template à partir de la vue en utilisant un dictionnaire :

def index(request):
    context = {'message': 'Bienvenue sur ma première vue Django avec un template !'}
    return render(request, 'index.html', context)

Dans le template index.html, vous pourrez ensuite afficher la variable message comme ceci :

<h1>{{ message }}</h1>

Conclusion

Dans cet article, nous avons exploré les bases des vues dans Django, appris à créer une vue simple et à configurer les URLs pour afficher cette vue. Nous avons également vu comment étendre les fonctionnalités d’une vue en utilisant des templates. Ces concepts sont fondamentaux pour développer des applications web robustes avec Django.

Maintenant, voyons comment afficher tout ça avec des fichiers HTML un peu spéciaux : les templates