私は現在、バックエンドが 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 のドキュメントと同じです。
ありがとう。ご指導誠に有難う御座います。