2012-12-13 3 views
-1

나는 urls.py 것을 가지고장고 1.4 CSRF는 어떻게 작동합니까?

{% extends "loyalty/auth.html" %} 
    {% load i18n %} 

    {% block auth_form %} 
    {% if messages %} 
    <ul> 
    {% for message in messages %} 
    <li>{{ message }}</li> 
    {% endfor %} 
    </ul> 
    {% endif %} 

    <form action="" method="post" id="login-form">{% csrf_token %} 
    {% if form.username.errors %}{{ form.username.errors }}{% endif %} 
    {{ form.username }} 
    {% if form.password.errors %}{{ form.password.errors }}{% endif %} 
    {{ form.password }} 
    <input type="hidden" name="this_is_the_login_form" value="1" /> 
    <input type="hidden" name="next" value="{{ next }}" /> 
    <button type="submit" name="submit">{% trans 'Log in' %}</button> 
    </form> 
    {% endblock %} 

내가 settings.py에 있습니다 :

from django.conf.urls import patterns, url 

urlpatterns = patterns('', 
    url(
     r'^login/$', 
     'django.contrib.auth.views.login', 
     {'template_name': 'loyalty/login.html'}, 
     name='login' 
    ), 
    url(
     r'^logout/$', 
     'django.contrib.auth.views.logout', 
     {'next_page': '/', }, 
     name='logout'), 
) 

및 템플릿 login.html *

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    # Uncomment the next line for simple clickjacking protection: 
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

그러나이 날이 오류를 제공합니다 : 관리 인터페이스에서

Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF cookie not set.

, 내가 같은 문제가 있습니다.

이 문제를 해결하려면 어떻게해야합니까?

답변

0

이 문제를 해결했습니다. 브라우저의 문제. 다른 브라우저를 사용해 보았는데 모두 정상적으로 작동합니다. 깨끗한 캐시와 쿠키를 시도했기 때문에이 문제가 발생한 이유를 이해하지 못했습니다.

1

사용자가보기에서 요청 컨텍스트를 전달하지 않은 것일 수 있습니다.

예 :

def show_form(request): 
    form = MyForm() 
    if request.method == 'POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 

    return render_to_response("template_to_display.html", {'form':form}, context_instance = template.RequestContext(request)) 

업데이트 : 미들웨어를 재 배열 건의 할 것입니다. localemiddleware를 제거하거나 마침내 놓으십시오. 장고 기본값은 this

+0

표준 Django 응용 프로그램을 사용합니다. urls.py에서 볼 수 있습니다. django.contrib.auth 관리 인터페이스에 동일한 문제점이 있습니다. – lmasikl

+0

@lmasikl : 답변을 한 번 더 보겠습니다 –

+0

나를 위해 작동하지 않습니다 ( – lmasikl