Django使用模型扩展用户登录

时间:2017-06-15 19:34:21

标签: django django-models django-authentication

我创建了一个扩展User模型的员工模型。当我创建一个员工时,我也可以在User.objects中找到相同的用户,所以我知道它已经创建。当我尝试使用该用户的凭据登录时,凭据未经过身份验证(用户名或密码不正确)

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="myemail@emails.com", 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 个答案:

答案 0 :(得分:2)

对于可以登录的创建用户,必须加密密码。您可以通过两种不同的方式达到此目的。

首先,您可以使用create_user代替create

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

或者您可以将密码设置为哈希:

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