私は自分のサイトのコメントシステムとしてdjango_commentsを使用していますが、コメントを投稿すると403エラーが発生します。どうして?
これは私の設定です:
MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
#"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.auth.middleware.SessionAuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"django.middleware.security.SecurityMiddleware",
)
他のフォームはうまく機能します。 403エラーは発生しません。
回答:
回答№1は2CSRFミドルウェアを無効にしているため、他のフォームは機能します。これは、WebサイトがCSRF攻撃に対して脆弱になるため、悪い考えです。
ザ post_comment
django_commentsからのビューは、明示的に csrf_protect
デコレータ。したがって、含める必要があります {% csrf_token %}
CSRFエラーを防ぐために、テンプレートのフォームタグに追加します。
それでも問題が解決しない場合は、おそらくビューです。 ドキュメントが言うように、テンプレートがでレンダリングされていることを確認する必要があります request
オブジェクト、それ以外の場合 {% csrf_token %}
タグは機能しません。