Python 无法验证注册用户的身份
我用AbstractUser mixin扩展了默认的django用户模型。当我注册用户时,我收到成功创建的Python 无法验证注册用户的身份,python,django,registration,Python,Django,Registration,我用AbstractUser mixin扩展了默认的django用户模型。当我注册用户时,我收到成功创建的用户消息。但是当我尝试登录时,用户不会进行身份验证。它返回错误的用户名/密码。在我开始使用abstractuser类之前,user\u login方法使用默认用户模型。我知道数据会插入数据库,因为我不能多次注册同一用户。我想知道是不是因为用户注册方法没有添加密码而没有进行身份验证?感谢您的帮助 tl;dr:无法验证使用user\u register方法注册的用户。为什么? 设置.py AUT
用户
消息。但是当我尝试登录时,用户不会进行身份验证。它返回错误的用户名/密码
。在我开始使用abstractuser类之前,user\u login
方法使用默认用户模型。我知道数据会插入数据库,因为我不能多次注册同一用户。我想知道是不是因为用户注册方法没有添加密码而没有进行身份验证?感谢您的帮助
tl;dr:无法验证使用user\u register
方法注册的用户。为什么?
设置.py
AUTH\u USER\u MODEL=“users.USER”
models.py
class User(AbstractUser):
avatar = models.ImageField(upload_to='images/', blank=True, null=True)
def get_absolute_url(self):
return reverse('detail-user', kwargs={'pk': self.id})
views.py
def user_register(request):
if request.user.is_anonymous():
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid:
form.save()
return HttpResponse('User created succcessfully.')
else:
form = UserRegisterForm()
context = {}
context.update(csrf(request))
context['form'] = form
return render_to_response('/', context)
else:
return HttpResponseRedirect('/')
def user_login(request):
if request.user.is_anonymous():
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
else:
return HttpResponse("Not active")
else:
return HttpResponse("Wrong username/password")
return HttpResponseRedirect('/')
forms.py
class UserRegisterForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ('username', 'email', 'password')
template.html
<form action="/users/create" method="POST">
{% csrf_token %}
<h4>Username</h4>
<input type="text" name="username" placeholder="admin">
<h4>Email</h4>
<input type="text" name="email" placeholder="admin@mail.com">
<h4>Password</h4>
<input type="password" name="password">
<div class="btn-list">
<button type="submit">Register</button>
</div>
</form>
{%csrf_令牌%}
用户名
电子邮件
密码
登记
对不起,代码墙。我希望尽可能明确。您必须使用
user.set_password()
方法设置密码,才能使用身份验证。您可以通过覆盖save
method@karthikr例如form.user.set_password(request.POST['password']).save()
?抱歉,我不熟悉django中的用户注册。否-在类UserRegisterForm
示例中: