Я использую это руководство чтобы попробовать создать приложение для входа в django (супер простой материал ...)
Это код, который я получил в своем шаблоне (index.html
)
<div id="login-box">
{{ state }}
<form class="login-widgets" action="/login/" method="post">
{% if next %}
<input class="login-widgets-text" type="hidden" name="next" value="{{ next }}" />
{% endif %}
Username :
<input class="login-widgets-text" type="text" name="username" value="{{ username}}" /><br />
Password :
<input type="password" name="password" value="" /><br />
<input class="login-button" type="submit" value="Log In" />
</form>
<!--<div class="login-widgets">
<p>Username : ___________</p>
<p>Password : ___________</p>
</div>-->
</div>
И это то, что мне сказали в руководстве добавить на страницу views.py
моего приложения:
def login_user(request):
state = "Please log in below..."
username = password = ''
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
state = "You're successfully logged in!"
else:
state = "Your account is not active, please contact the site admin."
else:
state = "Your username and/or password were incorrect."
return render_to_response('index.html',{'state':state, 'username': username})
Я настроил свою тестовую базу данных точно так, как описано в руководстве и в документации django, но все же мой логин продолжает получать эту ошибку в браузере:
Forbidden (403)
CSRF verification failed. Request aborted.
Я не понимаю, что это значит под проверкой CSRF - в моем settings.py
я установил MIDDLEWARE_CLASSES со следующим:
MIDDLEWARE_CLASSES = ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.aut.middleware.AuthenticationMiddleware.A contrib.messages.middleware.MessageMiddleware ', # Раскомментируйте следующую строку для простой защиты от кликджекинга: #' django.middleware.clickjacking.XFrameOptionsMiddleware ',)
Но я не уверен, как проверить CSRF и аутентифицировать логин. Насколько мне известно, суперпользователь базы данных и приведенный выше код выглядят правильно, за исключением того, что я не знаю, как добавить проверку CSRF. Спасибо большое за вашу помощь!