私は現在、バックエンドが Django によって処理され、フロントエンドが ReactJS によって処理されるプロジェクトに取り組んでいます。
以前の開発者 (彼らはもはや組織に所属していません) は、すべての API を手動で開発しました。彼らは DjangoRestFramework を認識していなかったと思います。私の仕事は、REST-ify現在動作している 50 個の奇妙な API を処理することです。
DRF の汎用ビュー (List、Create、Retrieve など)を使用しています。
DRFSimpleJWTを実装するタスクも割り当てられています。以前の開発者は、トークンを作成するためにすべての関数を手動でコーディングしましたcustom authentication。
API の作成を開始しました。List API と Retrieve API は正常に動作しますが、フロントエンド開発者が で POST リクエストを実行するCreateAPIViewと、説明が記載された 403 エラーが返されますcsrf cookie not set。
runserver ログ ファイルにも 403 エラーが表示されます。
を無効にして(コメントして)、permission_classesに変更してみましたAllowAny。
authentication_classes次に、無効化または削除に進みましたsession_authentication
場合によっては、データが通過せずOPTIONS、サーバー ログに表示されることもあります。
settings.pyファイルを確認すると、csrfmiddleware無効になっていることがわかります。これを有効にすると、すべてのリクエストで csrf エラーが発生します。私はグーグルでcors設定とdjango設定で遊んだ。何も機能しませんでした。
私の見解は非常に単純です。
MyCreateView(generics.CreateAPIView):
queryset = ModelName.objects.all
serializer_class =MySerializer
permission_classes = [IsAuthenticated,]
authentication_classes = [BasicAuthentication, SessionAuthentication,]
POST リクエストを機能させるために助けが必要です。また、SimpleJWT の使用を開始するときauthentication_classes、ビューで指定する必要がありますか? これはcorsと関係がありますか?
これsettings.py REST_FRAMEWORKは DRF のドキュメントと同じです。
ありがとう。ご指導誠に有難う御座います。