无法从django默认身份验证表单访问form.first_name和form.email



我使用默认的Django AuthenticationForm((作为用户登录功能。现在,当我在Django管理中看到用户模型内部时,它有用户名、电子邮件地址、名字、姓氏和活动状态等字段。

但在我的登录.html页面中,我只能访问form.username和form.password,但不能访问form.email和form.first_name??

我的观点:

def login(request):
if request.method == 'POST':
form = AuthenticationForm(data=request.POST)
if form.is_valid():
user = form.get_user()
authlog(request, user)
return redirect('home')
else:
messages.error(request, 'Invalid username or password')
# back_page = request.META.get('HTTP_REFERER')
return redirect('login')
# messages.error(request, student_form.errors, 'Incorrect')
# return HttpResponse(back_page)
else:
content = {
'form': AuthenticationForm()
}
return render(request, 'sign-in.html', content)
<div class="input-group">
<span class="input-group-text" id="basic-addon1"><span class="fas fa-envelope"></span></span>
{{form.emailaddress}}
</div>

<div class="input-group">
<span class="input-group-text" id="basic-addon2"><span class="fas fa-unlock-alt"></span></span>
{{form.password}}
</div>

在这里我可以访问form.password和form.username,但不能使用电子邮件地址登录。但我们知道,我们应该能够用电子邮件地址登录。

我这里有html页面的图片。

登录页面

身份验证表单只有用户名和密码字段。因此,您无法访问任何其他字段,因为它们没有定义。

如果您需要身份验证表单上的其他字段,可以按照文档中的说明更改设置中的USERNAME_FIELD

如果你真的需要更复杂的东西,你也可以写一份全新的身份验证表。

最新更新