Я не могу войти после обновления версии 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
крюк.