【学習記録】Django REST frameworkチュートリアル6 Views POST

この記事の続きです。

programming-gogogogo.hatenablog.com

こちらの動画を見ながらPythonDjango REST framework(DRF)について勉強しています。

www.youtube.com

前回作成したエンドポイントにPOSTでリクエストを送ってみるとエラーになりました。

f:id:JunpeiNakasone:20210317144536p:plain

公式ドキュメントを確認すると以下の文言があります。

www.django-rest-framework.org

Note that because we want to be able to POST to this view from clients that won't have a CSRF token we need to mark the view as csrf_exempt. This isn't something that you'd normally want to do, and REST framework views actually use more sensible behavior than this, but it'll do for our purposes right now. ちょっと文章の内容理解するのが難しいと感じましたが、「このviewにクライアントからCSRFトークンなしでPOST通信を送れるようにするには、csrf_exemptをつける必要がある。本来やるべきことではないしDRFはもっと細かい実装もできるが現時点ではとりあえずこれを使えば目的は果たせる」みたいな感じかと解釈しました。

exemptと言う単語の意味がわからなかったので調べたところ「免除」という意味のようでした。

以下のようにcsrf_exemptをimportしarticle_list関数の前に@csrf_exemptを追加します。
f:id:JunpeiNakasone:20210317145821p:plain

サーバーを再起動して改めてPOSTでリクエストを送ると正常にデータが登録され201でレスポンスが返されました。
f:id:JunpeiNakasone:20210317145934p:plain

次にGETでid別に取得できるか試すためlocalhost:8000/article/6でリクエストを送ると404エラーが返されました。
f:id:JunpeiNakasone:20210317150450p:plain

次の記事でid別にArticleを取得できるよう実装します。