Джанго формы всегда терпят неудачу - PullRequest
0 голосов
/ 29 декабря 2010

Я пытаюсь использовать встроенные в Django модули аутентификации. Для сайта, над которым я работаю, я хочу использовать адреса электронной почты в качестве имен для входа, а не просто обычные буквенно-цифровые поля, для которых они обычно установлены. Для этого я изменил все поля String на поля электронной почты и изменил их максимальную длину с 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 пусто. Есть идеи, что может быть не так? Я думаю, что я изменил все на свойства электронной почты, поэтому я не думаю, что это все. Кроме того, на случай, если что-то изменится, я пытаюсь сделать это на Google App Engine, используя djangoappengine .

1 Ответ

0 голосов
/ 29 декабря 2010

Извините, но вы не можете использовать модуль аутентификации Django поверх движка приложений Google. Django использует свою собственную специальную базу данных, которая похожа на google-app-engine, но не поддерживает вставку.

Если вы хотите выполнить аутентификацию в GAE, вы должны сделать это способом google-app-engine: http://code.google.com/appengine/docs/python/users/

...