Използвам този урок за да изпробвате създаването на приложение за влизане в 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.auth.middleware.AuthenticationMiddleware', 'django. contrib.messages.middleware.MessageMiddleware', # Разкоментирайте следващия ред за проста защита от кликакинг: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', )
Но не съм сигурен как да проверя CSRF и да удостоверя влизане. Доколкото знам, супер потребителят на базата данни и кодът по-горе изглеждат правилни, освен че не знам как да добавя CSRF проверка. Благодаря ви много за вашата помощ!