Django形式总是失败

时间:2010-12-29 04:00:58

标签: django google-app-engine django-forms django-authentication

我正在尝试使用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在谷歌应用引擎上执行此操作。

1 个答案:

答案 0 :(得分:0)

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

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