Exercice 2 Django Framework Corrigé S1
1. Créer un formulaire personnalisé pour l'inscription d'utilisateur
Commencez par créer un formulaire d'inscription dans un fichier forms.py
dans l'application que vous utilisez pour gérer les utilisateurs (ou créez une nouvelle application users
si nécessaire).
forms.py
# users/forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
class UserRegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
UserCreationForm
est un formulaire intégré de Django qui gère la création de nouveaux utilisateurs.- Ici, nous avons ajouté un champ pour l'email et spécifié les champs que nous voulons dans le formulaire.
2. Créer des vues pour l'inscription, la connexion et la déconnexion
Dans le fichier views.py
de l'application users
, créez des vues pour gérer l'inscription, la connexion et la déconnexion.
views.py
# users/views.py
from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth import login, authenticate, logout
from django.contrib.auth.forms import AuthenticationForm
from .forms import UserRegisterForm
# Vue pour l'inscription
def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
messages.success(request, f'Compte créé pour {username} ! Vous pouvez maintenant vous connecter.')
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form': form})
# Vue pour la connexion
def login_view(request):
if request.method == 'POST':
form = AuthenticationForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
messages.success(request, f'Vous êtes connecté en tant que {username}.')
return redirect('home')
else:
messages.error(request, 'Nom d\'utilisateur ou mot de passe invalide.')
else:
messages.error(request, 'Nom d\'utilisateur ou mot de passe invalide.')
else:
form = AuthenticationForm()
return render(request, 'users/login.html', {'form': form})
# Vue pour la déconnexion
def logout_view(request):
logout(request)
messages.success(request, 'Vous avez été déconnecté.')
return redirect('home')
register
: gère l'inscription de l'utilisateur. Si le formulaire est valide, l'utilisateur est enregistré dans la base de données.login_view
: gère la connexion de l'utilisateur en utilisant le formulaire d'authentification intégréAuthenticationForm
.logout_view
: déconnecte l'utilisateur avec la fonctionlogout
de Django.
3. Configurer les URL
Ajoutez des chemins pour ces vues dans le fichier urls.py
de votre application users
.
urls.py
# users/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('register/', views.register, name='register'),
path('login/', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
]
N'oubliez pas d'inclure les URL de l'application users
dans le fichier urls.py
principal du projet :
# mysite/urls.py
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('', include('blog.urls')), # Par exemple pour votre application principale
]
4. Créer les templates HTML pour l'inscription et la connexion
Créez les templates pour l'inscription (register.html
) et la connexion (login.html
).
register.html
<!-- users/templates/users/register.html -->
<!DOCTYPE html>
<html>
<head>
<title>Inscription</title>
</head>
<body>
<h2>Créer un compte</h2>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">S'inscrire</button>
</form>
</body>
</html>
login.html
<!-- users/templates/users/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>
</body>
</html>
5. Ajouter des boutons de connexion/déconnexion dans le template de navigation
Modifiez votre fichier base.html
ou le template principal de votre projet pour afficher les boutons de connexion ou de déconnexion en fonction de l'état de connexion de l'utilisateur.
base.html
<!-- Exemple d'un navbar dans le template de base -->
<!DOCTYPE html>
<html>
<head>
<title>Mon site</title>
</head>
<body>
<nav>
<ul>
{% if user.is_authenticated %}
<li><a href="{% url 'logout' %}">Se déconnecter</a></li>
{% else %}
<li><a href="{% url 'login' %}">Se connecter</a></li>
<li><a href="{% url 'register' %}">S'inscrire</a></li>
{% endif %}
</ul>
</nav>
<!-- Contenu principal -->
<div>
{% block content %}
{% endblock %}
</div>
</body>
</html>
6. Rediriger les utilisateurs après connexion et déconnexion
- Après une connexion réussie, les utilisateurs sont redirigés vers la page d'accueil (
home
). - Après une déconnexion, les utilisateurs sont également redirigés vers la page d'accueil.
Ces redirections sont déjà gérées dans les vues login_view
et logout_view
par les appels à redirect
.
7. Tester l'application
Lancez le serveur de développement et testez les fonctionnalités :
python manage.py runserver
- Accédez à
http://127.0.0.1:8000/users/register/
pour créer un nouveau compte. - Accédez à
http://127.0.0.1:8000/users/login/
pour vous connecter. - Après connexion, vous devriez voir un bouton "Se déconnecter" dans la barre de navigation.
Pas encore de commentaires.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.