2012-02-09 8 views
2

は、CSRFの問題を解決するための2つのグーグルを通じてトローリング日、stackoverflowの、そしてdocs.djangoproject.com者。CSRF(私が知っている、その前に頼まれて!)

免責事項、Djangoの初心者で、書籍に沿っている django - Web開発が正しかったガイド。

:まあ、どうやら私はまだのようにstackoverflowのが、運上のすべての提案を試してみたので

:-(何か間違ったことは、1つのそのような試みの下を参照してください、あなたは間違いを指摘することができるかどうかを確認を取得しています view.py:

from django.shortcuts import render_to_response 
from django.template import RequestContext 

def add_vehicle(request): 
    return render_to_response('vehicle.html', RequestContext(request, {})) 

vehicle.html:

{% extends "base.html" %} 
{% block title %}Vehicle Registration{% endblock %} 
{% block content %} 
<html> 
<head> 
</head> 
<body> 

<form action="/vehicle/" method="post"> {% csrf_token %} 
    <table width=100%> 
     <tr> 
      <td>Reg #:</td> 
      <td><input type="text" name="regnumber"></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td>Model:</td> 
      <td><input type="text" name="model"></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td>Manufacturer:</td> 
      <td><input type="text" name="manufacturer"></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td>Year:</td> 
      <td><input type="text" name="year"></td> 
      <td></td>  
     </tr> 
     <tr> 
      <td>Chassis #:</td> 
      <td><input type="text" name="chasisnumber"></td> 
      <td></td>  
     </tr> 
     <tr> 
      <td></td> 
      <td><input type="submit" value="Submit"> 
      <input type="submit" value="Clear"> 
      </td> 
      <td></td>  
     </tr> 
    </table> 
</form> 
</body> 
</html> 
{% endblock %} 

私は、それがあまりにも多くのコードをstackoverflowしないことを望みます。

は今、私は CSRFトークン欠落または間違って入れません。

助けてください。

編集(エラーの詳細を追加)

settings.pyは、次のようになります。

:私はvehicle.htmlページを開いたときにどのようなコンソールが表示される。ここ

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

warnings.warn("A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext.") 
+0

-1:「わかっています、以前に尋ねられました!しかし、あなたはそれを探したり参照したりすることを拒否しましたか?それは失礼です。 –

+0

無礼に見えて申し訳ありません。しかし、私はすべての質問を見てのだとすべての答えが提供され、同じ上の別の質問を追加することが間違っていたが、私は選択肢を持っていなかったと感じました。実はその目的は、私は質問が繰り返しであるが、私の特定の場合に応答しない感謝覗いを言っていました。私の悪い – lukik

+0

あなたは、Apacheの下でのmod_wsgiで実行されている複数のDjangoサイトを持っていますか? –

答えて

4

に署名を欠落している可能性があり

return render_to_response('vehicle.html', {}, context_instance= RequestContext(request))` 
+0

@lukik:**アップデート**として**質問**にエラーメッセージを含めてください。重要な事実をコメントとして追加しないでください。 –

+0

@ S.Lott:Noted。訂正してくれてありがとう。 – lukik

+0

@lukik:あなたが投稿したコードは、この回答のように**正確には**ありません。実際に使用している実際のコードを表示するには、コードを修正して**アップデート**してください。 –

0

あなたは、このドキュメントをチェックアウトする必要があります https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

あなたはrender_to_response(template_name[, dictionary][, context_instance][, mimetype])ので、あなたはCSRFトークンがコンテキストに置かれていることを確認するために、次のようにそれを呼び出すべきであるのか?render_to_response用ミドルウェア

+0

私はミドルウェアを持っている: ** settings.py ** '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'、 ') – lukik

+0

@lukik:**問題のコードサンプルを記載してください。** **アップデート**として。コメントにコードを追加しないでください。 –

関連する問題