如何在django中验证一个用户(模型)?根据django文档,我们可以使用下面的方法来验证用户,
user=auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
return redirect('/profile')
我上面试过了,它成功了,但它只适用于管理面板自带的内置用户模型。我的问题是:
我已经在models.py中创建了一个带有自定义字段的模型(Customer),例如:电话号码
from django.db import models
class Customers(models.Model):
first_name=models.CharField(max_length=100)
last_name=models.CharField(max_length=100)
phone=models.CharField(max_length=15)
email=models.EmailField()
password=models.CharField(max_length=500)
signin.html
<form action="/login/" method="POST">
{% csrf_token %}
<input type="email" name="email" placeholder="Enter email">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="submit">
</form>
在views.py
def login(request):
if request.method=='POST':
email= request.POST.get('email')
password= request.POST.get('password')
user = Customers.authenticae(email=email, password=password)
if user is not None:
user.login(request, user)
return redirect('/profile')
return render(request,'login.html')
当我尝试这个时,它说:
type object 'Customers' has no attribute 'authenticae'
我是否需要在models.py中创建authenticate()函数,或者有一个方法?如何认证我的客户,我刚开始学习django框架,有人能帮我实现这个吗?
内置用户类具有认证方法。要使用身份验证方法,您必须将客户模型链接到内置的用户模型。
有三种方法可以将你的模型链接到内置用户模型:您可以从内置用户模型扩展客户。
你可以覆盖内置的用户模型。
最简单的方法是从AbstractBaseUser继承。
下面是一个完整的例子。
最好的方法是扩展用户模型或创建一个全新的用户模型。
另外,如果您必须使用电子邮件进行身份验证,那么您必须编写自己的身份验证后端。