我正在尝试使用 Django 的内置身份验证模块。对于我正在开发的网站,我想使用电子邮件地址作为登录名,而不仅仅是它们通常设置的普通字母数字字段。为了做到这一点,我将所有字符串字段更改为电子邮件字段,并将它们的最大长度从 30 更改为 320。我的注册码似乎工作正常,但我的登录码却没有。这是我现在正在使用的:
def login(request):
if request.method == 'POST':
form = AuthenticationForm(request.POST)
if form.is_valid():
return HttpResponse("valid")
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)
return HttpResponseRedirect("/")
# Redirect to a success page.
else:
return HttpResponse("Disabled Account")
# Return a 'disabled account' error message
else:
return HttpResponse("Invalid Login")
# Return an 'invalid login' error message.
else:
return HttpResponse("%s" % repr(form.errors))
else:
form = AuthenticationForm()
return render_to_response("login.html", {'form': form, }, context_instance=RequestContext(request))
无论我提交什么, form.is_valid() 都返回 FALSE 但 form.errors 为空。有什么想法可能是错的吗?我想我将所有内容都更改为电子邮件属性,所以我不认为就是这样。此外,如果它改变了我试图在谷歌应用引擎上使用djangoappengine执行此操作的任何内容。