Formation incluse

Comprendre les Vues dans Django

jodeanas TENANG
jodeanas TENANG
8 Août 2025 · 8,00 min lecture
0
Development and Programming
Comprendre les Vues dans Django

Qu’est-ce qu’une vue dans Django ?

Une vue dans Django est une fonction ou une classe qui reçoit une requête HTTP, traite les données nécessaires (depuis la base de données ou ailleurs), puis renvoie une réponse HTTP. C’est l’un des composants fondamentaux du modèle MVC (ou plutôt MTV dans Django : Model – Template – View).

La vue agit donc comme un intermédiaire entre les modèles et les templates. Elle peut retourner du HTML, du JSON, un PDF, une redirection, ou tout autre type de réponse HTTP.


Types de vues : Fonction vs Classe

Django propose deux manières principales de définir une vue : les vues basées sur des fonctions (Function-Based Views, ou FBV) et les vues basées sur des classes (Class-Based Views, ou CBV).

1. Les vues basées sur des fonctions (FBV)

Les FBV sont des vues simples écrites comme des fonctions Python. Elles sont faciles à lire, directes, et parfaites pour des vues simples ou pour apprendre.

from django.http import HttpResponse

def bonjour_vue(request):
    return HttpResponse("Bonjour depuis une vue fonctionnelle !")

✅ Avantages :

    Simplicité

    Facilité de lecture

    Contrôle total du comportement

🚫 Inconvénients :

    Peu réutilisable pour les comportements courants (comme les formulaires, listes, etc.)

2. Les vues basées sur des classes (CBV)

Les CBV permettent d’organiser la logique en utilisant la programmation orientée objet. Django fournit des vues génériques prêtes à l’emploi pour les opérations courantes comme afficher une liste, créer un objet, etc.

from django.views import View
from django.http import HttpResponse

class BonjourVue(View):
    def get(self, request):
        return HttpResponse("Bonjour depuis une vue basée sur une classe !")

✅ Avantages :

    Réutilisabilité

    Extensibilité

    Utilisation de vues génériques (ListView, CreateView, etc.)

🚫 Inconvénients :

    Courbe d’apprentissage plus élevée

    Moins explicite pour les débutants

Vues génériques basées sur les classes (Generic Views)

Django propose une série de vues génériques pour les opérations les plus courantes :
Vue générique    Description
ListView    Affiche une liste d’objets
DetailView    Affiche les détails d’un objet
CreateView    Formulaire de création
UpdateView    Formulaire de mise à jour
DeleteView    Confirmation et suppression d’objet

Exemple d'une ListView :

from django.views.generic import ListView
from .models import Article

class ArticleListView(ListView):
    model = Article
    template_name = 'articles/liste.html'

Liaison entre vues et URLs

Chaque vue doit être connectée à une URL pour être accessible par un utilisateur.

Dans urls.py :

from django.urls import path
from .views import bonjour_vue

urlpatterns = [
    path('bonjour/', bonjour_vue, name='bonjour'),
]

Pour une CBV, il faut l’appeler avec .as_view() :

from .views import BonjourVue

urlpatterns = [
    path('bonjour/', BonjourVue.as_view(), name='bonjour_classe'),
]

Retourner différentes réponses dans une vue

Une vue n’est pas limitée à retourner du HTML. Voici quelques exemples :

    HTML classique :

return render(request, 'ma_template.html', contexte)

    Redirection :

from django.shortcuts import redirect

return redirect('nom_de_la_vue')

    JSON (API) :

from django.http import JsonResponse

return JsonResponse({'message': 'Données JSON'})

Utiliser des décorateurs pour les vues

Les décorateurs permettent d’ajouter des fonctionnalités à une vue, comme la protection par authentification.

from django.contrib.auth.decorators import login_required

@login_required
def dashboard(request):
    ...

Pour les CBV, on utilise method_decorator :

from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import login_required

@method_decorator(login_required, name='dispatch')
class DashboardView(View):
    ...

Bonnes pratiques avec les vues Django

  • Garder la vue simple et lisible.

  • Déléguer la logique métier complexe aux services ou gestionnaires externes.

  • Utiliser les CBV génériques quand cela simplifie le code.

  • Privilégier les FBV quand la logique est spécifique ou très personnalisée.

  • Séparer les vues API et les vues HTML pour plus de clarté.

Les vues sont un élément fondamental dans la construction d’une application Django. Que l’on choisisse les fonctions pour leur simplicité ou les classes pour leur flexibilité, il est essentiel de comprendre leur rôle et leurs mécanismes pour concevoir des applications claires, efficaces et maintenables. Django offre une grande liberté dans le choix de l’approche, à condition de respecter les bonnes pratiques et de bien structurer son code.


 
 
 
0

Applaudissez pour montrer votre soutien

jodeanas TENANG

jodeanas TENANG

0 Suivez-nous · Rédacteur pour Development and Programming