Dans toute application Web, l'authentification est un élément crucial. Django, un framework de développement Web Python, offre un système d'authentification robuste et flexible qui permet aux développeurs d'implémenter des fonctionnalités d'authentification sans avoir à repartir de zéro. Dans ce chapitre, nous explorerons comment utiliser l'authentification dans les vues Django.
Pour commencer, il est important de comprendre que l'authentification dans Django est basée sur la session. Lorsqu'un utilisateur se connecte à une application Django, le framework crée une session pour cet utilisateur, qui est maintenue jusqu'à ce que l'utilisateur se déconnecte. La session est stockée côté serveur et le client (généralement un navigateur Web) reçoit un cookie avec un identifiant de session, qui est renvoyé au serveur à chaque requête ultérieure.
Django fournit plusieurs vues prédéfinies pour gérer l'authentification, qui se trouvent dans le module django.contrib.auth.views
. Ces vues incluent, entre autres, la page de connexion, la page de déconnexion, la page de modification du mot de passe, la page de réinitialisation du mot de passe et la page de confirmation par e-mail.
Pour utiliser ces vues, vous devez d'abord configurer les URL correspondantes dans votre fichier d'URL. Par exemple, pour configurer l'URL de la page de connexion, vous pouvez ajouter la ligne suivante à votre urls.py code> :
à partir de django.contrib.auth importer des vues en tant que auth_views
modèles d'URL = [
path('login/', auth_views.LoginView.as_view(), name='login'),
#...
]
Après avoir défini l'URL, vous pouvez utiliser la vue correspondante dans vos modèles. Par exemple, vous pouvez créer un lien vers la page de connexion dans votre modèle de base comme ceci :
Connexion
Par défaut, la vue LoginView
utilise un modèle appelé registration/login.html
. Si vous souhaitez utiliser un modèle différent, vous pouvez le spécifier dans l'appel à as_view()
. Par exemple :
path('login/', auth_views.LoginView.as_view(template_name='myapp/login.html'), name='login'),
En plus des vues d'authentification prédéfinies, Django offre également la possibilité de créer vos propres vues d'authentification. Pour cela, vous pouvez utiliser la fonction authenticate()
, qui vérifie si les identifiants fournis par un utilisateur sont valides. Si les informations d'identification sont valides, authenticate()
renvoie un objet User ; sinon, il renvoie Aucun
.
Une fois que vous avez un objet User, vous pouvez l'utiliser pour démarrer une session pour l'utilisateur avec la fonction login()
. Par exemple :
depuis django.contrib.auth importer authentifier, se connecter
def my_login_view (requête) :
si request.method == 'POST' :
nom d'utilisateur = request.POST['nom d'utilisateur']
mot de passe = request.POST['mot de passe']
utilisateur = authentifier (demande, nom d'utilisateur = nom d'utilisateur, mot de passe = mot de passe)
si l'utilisateur n'est pas Aucun :
connexion (demande, utilisateur)
# Redirection vers une page de réussite.
redirection de retour ('home')
autre:
# Renvoie un message d'erreur 'Connexion invalide'.
return render(request, 'myapp/login.html', {'error': 'Invalid login'})
autre:
return render(requête, 'myapp/login.html')
En résumé, Django propose un certain nombre d'outils puissants pour travailler avec l'authentification dans vos vues. Que vous utilisiez les vues prédéfinies ou que vous créiez les vôtres, vous pouvez mettre en œuvre un système d'authentification robuste et sécurisé avec une relative facilité.