2011-07-05 3 views
2

CSRF 토큰 유효성 검증 403 오류를 해결할 수 없습니다.django CSRF 유효성 확인

보기 :

from django.template import RequestContext 
def add(request, name): 
#logic 
return render_to_response("category/add.html", {"form": form}, 
    context_instance = RequestContext(request))  

템플릿 :

<form action="/category/add/" method="post"> 
    {% csrf_token %} 
    New Category: <input type="text" name="name" id="categoryname" /> 
    <input type="submit" value="Hinzufuegen" /> 
</form> 

설정 :

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', 
) 

답변

1

이 보인다. CSRF 토큰의 유효성을 검증하지 않은 것 같습니다 ... my case에서 나를 도왔습니다 ...

+0

감사합니다. garmoncheg, 그 트릭을! – Robse

+0

도움이 됨) – garmoncheg

+0

CsrfResponseMiddleware의 사용은 성능에 영향을 미치고 잠재적 인 보안 문제 (아래 참조)로 인해 사용하지 않는 것이 좋습니다. 응용 프로그램이 csrf_token 태그를 사용하도록 업데이트 될 때까지 임시 측정 값으로 사용할 수 있습니다. Django 1.4에서는 더 이상 사용되지 않으며 제거 될 예정입니다. https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#legacy-method – Medorator

2

당신이 검증 폼에 POST 데이터를 전달하는을 여기에 내가 가진 무엇인가? 당신이 뭔가를 할 필요가 : 당신이 당신의 MIDDLEWARE_CLASSES에

'django.middleware.csrf.CsrfViewMiddleware', 
'django.middleware.csrf.CsrfResponseMiddleware', 

를 추가 할 필요가 같은

 from django.template import RequestContext 
    def add(request, name): 
     # Logic 
     if request.type == "POST": 
     form = YourFormClass(request.POST) 
     if form.is_valid(): 
      # Success! 
     else: 
      # Invalid form 
     else: 
     return render_to_response("category/add.html", {"form": form}, 
     context_instance = RequestContext(request))