logo oujood
🔍

Protéger vos vues avec login_required

Sécurisez vos pages privées en redirigeant automatiquement les utilisateurs non authentifiés.

OUJOOD.COM

Créer un système de connexion est inutile si n'importe qui peut accéder à vos pages sensibles en tapant simplement l'URL. Django propose une solution élégante pour verrouiller vos vues : le décorateur @login_required. C'est le videur à l'entrée de votre boîte de nuit numérique.

Utilisation du décorateur @login_required

Pour une vue basée sur une fonction, il suffit d'ajouter une ligne juste au-dessus de votre définition. Si un utilisateur non connecté tente d'entrer, Django le renvoie vers la page de connexion. Une fois identifié, il est automatiquement redirigé vers la page qu'il visait initialement grâce au paramètre next.

  📋 Copier le code

from django.contrib.auth.decorators import login_required

@login_required
def mon_espace_prive(request):
    # Seuls les utilisateurs connectés arrivent ici
    return render(request, 'prive.html')

Le cas des vues basées sur les classes (CBV)

Si vous préférez les classes aux fonctions, le décorateur ne s'applique pas de la même manière. Vous devez utiliser un "Mixin" nommé LoginRequiredMixin. Il doit toujours être placé en premier dans la liste des héritages de votre classe pour fonctionner correctement.

  📋 Copier le code

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView

class MaVuePrivee(LoginRequiredMixin, TemplateView):
    template_name = 'prive.html'

Configuration de l'URL de redirection

Par défaut, Django cherche une page nommée /accounts/login/. Si votre page de connexion a un autre nom, vous devez le préciser dans votre fichier settings.py avec la variable LOGIN_URL. Je vous conseille de le faire systématiquement pour éviter les erreurs 404 inattendues.

Pour bien comprendre comment gérer ces utilisateurs une fois connectés, je vous renvoie à la leçon sur la connexion et déconnexion Django.

Par carabde | Mis à jour le 08/05/2026