4

Django のドキュメントなど、Django での csrf 保護に関するいくつかの投稿を読みましたが、正しく使用する方法についてはまだかなり混乱しています。

最も明確な部分は HTML のものですが、Python のものはちょっと混乱しています。

HTML

{% csrf_token %}フォーム内

パイソン

c = {}
c.update(csrf(request))

情報を表示したり要求したりするときに、あらゆる形式でそれが必要ですよね?


次に、このcsrf保護をどのようにに含めますreturn render()か? これは正しいです?

return render(request,'index.html',{'var':var_value})

または、 Python ドキュメントの例( )cのような場所を含める必要があります。または、それが正しければ、変数に含まれていますか?return render_to_response("a_template.html", c)request


そして、フォームがないために csrf を使用する必要がない場合。これは、テンプレートに値を返す正しい形式でしょうか?

return render(request,'index.html',{'var':var_value})

4

3 に答える 3

0

私が覚えている限り、Django には、すべてを透過的に処理する csrf 保護用の独自のミドルウェアがあります。{% csrf_token %}フォームの中に含めるだけです。POST リクエストには CSRF トークンが必須です (@csrf_exempt デコレーターを使用する場合を除く)。したがって、フォームは次のようになります。

<form action="." method="post">
{% csrf_token %}
 your input fields and submit button...
</form>

お役に立てれば。

于 2013-07-01T16:11:01.463 に答える