2017-06-15 1 views
0

J'ai créé un modèle d'employé qui étend le modèle Utilisateur. Lorsque je crée un employé, je peux également trouver le même utilisateur dans User.objects, donc je sais qu'il est créé. Quand j'essaye avec connexion que les informations d'identification de l'utilisateur les informations d'identification ne sont pas authentifiés (nom d'utilisateur incorrect ou mot de passe)Connexion Django avec le modèle Extension Utilisateur

class Employee(User): 
start_date = models.DateField() 

@property 
def leave_days_remaining(self): 
    #to calculate 
    calculated_days=10 
    return calculated_days 



def trial(request): 

emp = Employee.objects.create(username='lll', password='pass', 
email="[email protected]", first_name='Mokgadi,   
    last_name='Rasekgala', start_date=datetime.date.today()) 
found=User.objects.get(username='lll') 
print found.email 
print found.username 
print found.password #Found exists 
return render(request, 'leave/trial.html') 






{% if form.errors %} 
     <p>{{ form.errors }}Your username and password didn't match. Please try again.</p> 
{% endif %} 
<form method="post" action="{% url 'login' %}"> 
    {% csrf_token %} 
    <p> 
     <label>Username</label> 
     <input type="text" name="username"> 
    </p> 
    <p> 
     <label>Password</label> 
     <input type="password" name="password"> 
    </p> 
    <button type="submit">Login</button> 
</form> 
+1

Vous devez utiliser '' create_user' au lieu de créer '. Ou vous devez hacher le mot de passe. – Brobin

Répondre

2

Pour créer des utilisateurs qui peuvent se connecter, le mot de passe doit être crypté. Vous pouvez l'atteindre de deux manières différentes.

D'abord, vous pouvez utiliser create_user au lieu de create:

emp = Employee.objects.create_user(...)

Ou vous pouvez définir le mot de passe de hachage:

emp = Employee.objects.create(...) emp.set_password("password")

+0

Merci beaucoup. –