1. ホーム
  2. パイソン

Django の送信フォームエラー。CSRF トークンがないか、不正確です。

2022-03-02 13:11:15

1、Djangoの送信フォームでエラーが発生しました。Django の送信フォームのエラーです。

CSRF token missing or incorrect

具体的なエラーページは以下の通りです。

2. Youdao辞書では、次のように訳されています。

通常、これは本物のクロスサイトリクエストフォージェリがある場合、または Django の CSRF 機構が正しく使われていない場合に起こります。郵便のフォームに関しては、:
ブラウザがCookieを受け入れている。

view 関数は、テンプレートのレンダリングメソッドにリクエストを渡します。

テンプレートでは、各POSTフォームに{% csrf_token %}というテンプレート・トークンがあり、内部URLをターゲットにしています。

CsrfViewMiddleware を使用していない場合は、csrf_token テンプレートタグを使用するビューと POST データを受け付けるビューで csrf_protect を使用する必要があります。

このフォームには有効なCSRFトークンがあります。ログイン後にトークンが回転するため、別のブラウザタブにログインした後や、ログイン後に戻るボタンをクリックした後に、フォームを使用してページを再読み込みする必要があるかもしれません。

このページのヘルプセクションが表示されるのは、Django の設定ファイルに DEBUG = True があるためです。これを False に変更すると、最初のエラーメッセージだけが表示されます。


CSRF_FAILURE_VIEWの設定を使って、このページをカスタマイズすることができます。

3. 解決策

(1) プロジェクト下の settings.py ファイルに django.middleware.csrf.CsrfViewMiddleware が存在するかどうかを判断します。

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware,
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware,
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

(2) settings.py ファイルが設定されていることを確認し、それでもエラーが報告される場合は、フォームの一番下に一行のコードを追加します。

{% csrf_token %}

これは上記のエラーを報告しないはずです。上記は学習目的のみです、ありがとうございます!