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.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 fonction logout
de Django.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
]
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>
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>
home
).Ces redirections sont déjà gérées dans les vues login_view
et logout_view
par les appels à redirect
.
Lancez le serveur de développement et testez les fonctionnalités :
python manage.py runserver
http://127.0.0.1:8000/users/register/
pour créer un nouveau compte.http://127.0.0.1:8000/users/login/
pour vous connecter.
Ajouter un commentaire
Veuillez vous connecter pour ajouter un commentaire.
Pas encore de commentaires.