Подтвердить что ты не робот

Использование AuthenticationForm в Django

Я пытаюсь использовать форму AuthenticationForm с django и выяснять, что я не могу получить форму для проверки. Я пропустил это до простого теста (при условии, что это правильно), который, похоже, не работает. Может ли кто-нибудь увидеть проблему здесь?

>>> from django.contrib.auth.forms import AuthenticationForm
>>> POST = { 'username': 'test', 'password': 'me', }
>>> form = AuthenticationForm(POST)
>>> form.is_valid()
False

Есть ли настоящая причина, по которой он не будет проверяться? Я использую его неправильно? Я в основном смоделировал его после собственного входа в систему django.

4b9b3361

Ответ 1

Try:

form = AuthenticationForm(data=request.POST)

Ответ 2

После нескольких часов проведенного поиска "Почему в хаке нет ошибки проверки?" Я столкнулся с этой страницей: http://www.janosgyerik.com/django-authenticationform-gotchas/

Первый аргумент аутентификацииForm не данных! на всех:

def __init__(self, request=None, *args, **kwargs):

Итак, поэтому вам нужно передать req.POST данные или передать что-то еще в первом аргументе. В одном из ответов здесь уже сказано:

AuthenticationForm(data=req.POST)

Вы также можете использовать один из них:

AuthenticationForm(req,req.POST)
AuthenticationForm(None,req.POST)

Ответ 3

Код функции is_valid:

return self.is_bound and not bool(self.errors)


>>> form.errors
{'__all__': [u'Please enter a correct username and password. Note that both fields are case-sensitive.']}

Если вы видите, что код метода очищен от AuthenticationForm

def clean(self):
    username = self.cleaned_data.get('username')
    password = self.cleaned_data.get('password')

    if username and password:
        self.user_cache = authenticate(username=username, password=password)
        if self.user_cache is None:
            raise forms.ValidationError(_("Please enter a correct username and password. Note that both fields are case-sensitive."))
        elif not self.user_cache.is_active:
            raise forms.ValidationError(_("This account is inactive."))
    self.check_for_test_cookie()
    return self.cleaned_data

"Проблема" заключается в том, что не выходит пользователь с этим именем пользователя и passowrd