この記事の続きです。
programming-gogogogo.hatenablog.com
こちらの動画を見ながらPythonのDjango REST framework(DRF)について勉強しています。
前回作成したエンドポイントにPOSTでリクエストを送ってみるとエラーになりました。
公式ドキュメントを確認すると以下の文言があります。
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を追加します。
サーバーを再起動して改めてPOSTでリクエストを送ると正常にデータが登録され201でレスポンスが返されました。
次にGETでid別に取得できるか試すためlocalhost:8000/article/6でリクエストを送ると404エラーが返されました。
次の記事でid別にArticleを取得できるよう実装します。