Я не могу войти после обновления версии django

Я пытаюсь обновить старый код с django 1.5 до 1.8 для клиента. Использование проекта django.contrib.auth.views.login проверить логин. urls.py выглядит следующим образом:

urlpatterns = patterns('',
    url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'accounts/login.html', 'authentication_form': LoginForm}, name="login"),
    url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', {'template_name': 'accounts/logged_out.html'}, name="logout"),
)

Здесь LoginForm учебный класс:

class LoginForm(forms.Form):
    username = forms.CharField(label=_("Username"), max_length=120)
    password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)

    def __init__(self, request=None, *args, **kwargs):
        self.request = request
        self.user_cache = None
        super(LoginForm, self).__init__(*args, **kwargs)

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

        if self.request:
            if not self.request.session.test_cookie_worked():
                raise forms.ValidationError(_("Your Web browser doesn't appear to have cookies enabled. Cookies are required for logging in."))

        return self.cleaned_data

и вот список промежуточного программного обеспечения:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',

    'apps.facebook.middleware.FacebookMiddleware',
)

До обновления мне удалось войти, но после обновления я уже не могу войти. Я получил следующую неполевую ошибку:

В вашем веб-браузере не включены файлы cookie. Cookies необходимы для входа в систему.

Если я перейду на django 1.5, я снова смогу войти в систему. Как я могу решить проблему и почему логин не работает в django 1.8.

1 ответ

Решение

Удалите тест cookie из формы входа, это не обязательно. Проверка была удалена из формы входа в Django в Django 1.7 ( примечания к выпуску).

У вас включена защита CSRF, которая уже гарантирует, что куки включены.

Непонятно, почему вы определяете собственную форму входа, а не используете встроенную форму. Использование собственной формы означает, что вы сталкиваетесь с такими проблемами и упускаете новые функции, такие как confirm_login_allowed крюк.

Другие вопросы по тегам