Bonjour !
Je suis débutant en Django, j’esssai d’implémenter un espace membre en utilisant django.contrib.auth.
Tout d’abord j’étend le User de base pour avoir plus de renseignements sur un user :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from django.db import models from django.contrib.auth.models import User class Profil(User): user = models.OneToOneField(User, on_delete=models.CASCADE, parent_link=True) postal_code = models.CharField(max_length=255) facebook_profil = models.URLField(max_length=255) make = models.CharField(max_length=255) model = models.CharField(max_length=255) year = models.CharField(max_length=255) photo = models.ImageField(upload_to="") def __str__(self): return self.user.username ` |
Ensuite j’ai mes formulaires pour l’inscription et la connexion :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | from django import forms from members.models import Profil class RegisterForm(forms.ModelForm): class Meta: model = Profil exclude = ("is_staff", "groups", "is_active", "is_superuser", "user_permissions", "last_login", "date_joined") fields = ["username", "password", "first_name", "last_name", "email", "postal_code", "facebook_profil", "make", "model", "year", "photo"] class LoginForm(forms.Form): username = forms.CharField(label="Nom d'utilisateur", max_length=30) password = forms.CharField(label="Mot de passe", widget=forms.PasswordInput) ` |
Puis finalement je créer un utilisateur avec une vue générique CreateView, et je le connecte avec une vue générique LoginView :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from django.shortcuts import render from django.views.generic import CreateView from .models import Profil from .forms import RegisterForm, LoginForm from django.urls import reverse_lazy from django.contrib.auth.views import LoginView class Register(CreateView): template_name = "members/register.html" model = Profil form_class = RegisterForm success_url = reverse_lazy('login') class Login(LoginView): form = LoginForm template_name = "members/login.html" |
Mon problème est que mon utilisateur se créer avec un mot de passe en clair, et ensuite dans la connexion l’authentification échoue, et je crois que c’est justement parce que le mot de passe n’est pas encrypté :
Quelqu’un aurait une idée du problème ? Comment hasher mon mot de passe, pourquoi ce n’est pas fait ? Merci !
+0
-0