0

我正在尝试使用 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执行此操作的任何内容。

4

1 回答 1

0

抱歉,您不能在 google 应用引擎之上使用 Django 的身份验证模块。Django 使用它自己的特殊数据库后端,它类似于 google-app-engine 的但不兼容插件。

如果您想在 GAE 上进行身份验证,您应该使用 google-app-engine 方式: http ://code.google.com/appengine/docs/python/users/

于 2010-12-29T05:01:40.560 回答