私は数多くのフォーラムや投稿を見ましたが、まだそれを処理できませんでした。 Here in django docと表示されますDjango:CSRFが間違っているか不足しています
CSRFミドルウェアは、デフォルトでMIDDLEWARE設定で有効になっています。その設定を上書きする場合は、CSRF攻撃が処理されていると見なすビュー>ミドルウェアの前に 'django.middleware.csrf.CsrfViewMiddleware'が来るはずです。
これを無効にした場合、これは推奨されませんが、保護する特定のビュー(下記参照)でcsrf_protect()を使用できます。 POSTフォームを使用するすべてのテンプレートに
、フォームは、内部URLのためのものである場合>要素内csrf_tokenタグを使用して、例えば:
フォームアクション {%csrf_token%}
その上で、私のHTMLテンプレートに私は単純でした:
<form id='frm' name='frm' method="post" action="{% url 'gettip' %}" >
{% csrf_token %}
<input type="text" name="tipid" name="tipid">
<input type="submit" value="Get Tip Value"/>
</form>
をミドルウェアはすでにロードされているので、私はCSRF_tokenは隠し要素を作成すると予想しました。フォームに要素がなく、CSRFエラーが発生します。
フォームはどのモデルにも関連付けられていません。私はforms.pyも使用していません。私の現在の見解は、単純に何かを出力することです:
def gettip(request):
if request.POST:
return HttpResponse('You requested a tip')
#from a weblink, i was told to add the following but it made no difference
context = {}
return render_to_response('tip.html',context, context_instance=RequestContext(request))
明らかに、隠された要素が全く存在しないため、CSRFがありません。
私はPHPから移行しており、これは私に苦労しています。私のフォームはログインの目的ではありませんが、同じエラーのために私はcouldn't get this one to work eitherです。私はdjango 1.10を使っていて、フォームが提出されたときに肯定的な回答を得たいだけです。
フォームが表示されているテンプレートを表示している「gettip」ビューはオンですか?そうでない場合は、それを表示してください。 –
'context_instance'はDjango 1.10の' render_to_response'から削除されました。そのため、ビューはまったく動かないはずです。 – Alasdair