Objectifs :
- Comprendre les bases de l’authentification dans Django.
- Configurer le système d’authentification par défaut de Django.
- Créer des vues pour gérer les actions liées à l’authentification (inscription, connexion, déconnexion).
- Personnaliser le modèle utilisateur si nécessaire.
Prérequis :
- Une installation fonctionnelle de Django.
- Des connaissances de base en Python et en développement web.
- Une compréhension de la structure d’un projet Django (applications, modèles, vues, URL).
Étapes :
1. CREATION D’une nouvelle application dans votre projet
Dépalcez vous à la racine dans votre projet et utiliser la commande suivante pour créer une nouvelle application
python manage.py startapp usersOuvrez le fichier settings.py de votre projet et assurez-vous que les applications nécessaires sont ajoutées à la liste INSTALLED_APPS :
INSTALLED_APPS = [
# ...
'django.contrib.auth' # application pour gérer l'authentification
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users', # Votre application
# ...
]2. Configuration des middlewares
Vérifiez que les middlewares liés à l’authentification sont présents dans votre configuration :
MIDDLEWARE = [
# ...
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# ...
]3.Création des formulaires d’inscription et de connexion
Dans user/forms.py, créez des formulaires basés sur les formulaires intégrés de Django :
from django import forms
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.models import User
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = User # Utilise le modèle utilisateur par défaut
fields = ('username', 'email', 'password1', 'password2')4. Création des vues pour l’inscription, la connexion et la déconnexion
Dans users/views.py, définissez les vues correspondantes :
from django.shortcuts import render, redirect
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.forms import AuthenticationForm
from .forms import CustomUserCreationForm
def register_view(request):
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save()
login(request, user)
return redirect('home') # Remplacez 'home' par le nom de votre vue d'accueil
else:
form = CustomUserCreationForm()
return render(request, 'register.html', {'form': form})
def login_view(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect('home') # Remplacez 'home' par le nom de votre vue d'accueil
else:
form = AuthenticationForm()
return render(request, 'login.html', {'form': form})
def logout_view(request):
logout(request)
return redirect('login') # Redirige vers la page de connexion après la déconnexion
5. Configuration des URL
Dans users/urls.py, définissez les chemins pour les vues :
from django.urls import path
from .views import register_view, login_view, logout_view
urlpatterns = [
path('register/', register_view, name='register'),
path('login/', login_view, name='login'),
path('logout/', logout_view, name='logout'),
]Ensuite, incluez ces URL dans le fichier urls.py principal de votre projet :
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('', include('django.contrib.auth.urls')), # Pour les vues d'authentification intégrées
]
6- Création des templates
Créez un répertoire templates/users/ et ajoutez-y les fichiers register.html et login.html. Par exemple, pour register.html :
<!DOCTYPE html>
<html>
<head>
<title>Inscription</title>
</head>
<body>
<h2>Inscription</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">S'inscrire</button>
</form>
</body>
</html>Et pour login.html
<!DOCTYPE html>
<html>
<head>
<title>Connexion</title>
</head>
<body>
<h2>Connexion</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Se connecter</button>
</form>
<p>Pas encore inscrit ? <a href="{% url 'register' %}">S'inscrire</a></p>
</body>
</html>7- Configuration des redirections après connexion/déconnexion
Dans settings.py, vous pouvez définir les redirections après connexion et déconnexion :
LOGIN_REDIRECT_URL = 'home' # Redirige vers la vue 'home' après connexion
LOGOUT_REDIRECT_URL = 'login' # Redirige vers la vue 'login' après déconnexion8- Protection des vues nécessitant une authentification
Pour restreindre l’accès à certaines vues aux utilisateurs authentifiés, utilisez le décorateur login_required :
Lancez votre application et http://127.0.0.1:8000/users/register/ et http://127.0.0.1:8000/users/login/
