2011-07-05 8 views
2

私はCSRFトークン検証403エラーを回避できません。 は、ここで私が持っているものです。django CSRF validation

ビュー:

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