6_Django REST framework入門 ~Viewsetsの理解~

Django REST framework
とんぺい
とんぺい

師匠おはようございます〜!

今日もDjango REST frameworkの続きを勉強しに来たブゥよぉ〜!

師匠
師匠

とんぺいくん、おはよう。前回はAPIViewについて学習したね。

今回はAPIViewと同じくAPI作成のヘルパー関数であるViewsetsについて理解しよう。

とんぺい
とんぺい

承知しましただブゥ!

今日もよろしくお願いします!

注意

  • コード中に[という文字列がありますが、これは [ が文字化けしたものです。
  • 今後修正法が判明次第修正いたします。

Django REST framework入門一覧

ソースコード

Viewsetsとは

師匠
師匠

Viewsetsは以下の状況で選択されることがあるよ。

  • DBに対する単純なCRUD操作のみの場合
  • 簡潔に素早くAPIを作成したい場合
  • 特別なカスタムロジックを実装しない場合
とんぺい
とんぺい

APIViewは外部APIと連携したり、複雑なロジックを組むときに使用されたけど、Viewsetsの場合はDBとのやり取りに特化してシンプルなAPIを作成したいときに使うんだブゥね!

師匠
師匠

その通り。Viewsetsは、modelの操作に関する典型的なロジックをサポートしてくれているんだ。では、実際にViewsetsのサンプルを書いてみようか。profile_apiviews.pyを開こう。

listメソッドの作成

師匠
師匠

Viewsetsでは、APIViewの時と作成する関数の名前が異なるので注意だ。一覧を取得したい場合はlistメソッドを作成するよ。

とんぺい
とんぺい

できたブゥ!

複数のViewを作成する場合は、ファイルを分割するんじゃなくて、同じファイルに違うクラス名でViewを作成するんだブゥね!

URLの設定

師匠
師匠

Viewの作成ができたので、次はそのViewにアクセスするためのURLを登録しよう。ここでは、Django REST frameworkのrouterを使用するよ。

とんぺい
とんぺい

Django REST frameworkのrouterって何なんだブゥ?

師匠
師匠

routerとは、Viewsetsを用いてViewの作成をしたときに、requestに応じて自動的にURLを生成する機能を持つよ。routerを使用することで、以下のようにURLを統合することができるんだ。

とんぺい
とんぺい

ほぅほぅ。routerを使うことで、ユーザの詳細取得用のURL等を自分で記述しなくても良くなるんだブゥな!

コードの記述量が減るのは良いことだブゥ!

師匠
師匠

余計なコードは書かずに、1番大切なロジックの部分に集中できるのはフレームワークを使用する最大のメリットだね。では、profile_apiurls.pyを編集しよう。

とんぺい
とんぺい

urls.pyの編集が完了したブゥ!

この中でbasename='hello-viewset'という記述があるんだけど、これはどういう意味があるんだブゥ?

師匠
師匠

これは、このURLの名前を設定しているよ。今後、他のファイルからこのURLを取得したい場合は、このbasenameを入力するんだ。

とんぺい
とんぺい

なるほど!URLに名前をつけることで、他のファイルでのURLのハードコーディングを避けているんだブゥね!確かに、その方がURLの変更があった際に対応しやすいブゥ!

師匠
師匠

その通り。では、terminalでdocker-compose upと入力してhttp://localhost:8000/api/hello-viewset/にアクセスしよう。以下の画面が表示されれば、listメソッド実装は完了だよ。

とんぺい
とんぺい

無事に表示されたブゥ!

他のメソッドの実装

師匠
師匠

無事にlistメソッドの実装も完了したところで、他のメソッドの実装に進んでいこう。profile_apiviews.pyを開こう。

とんぺい
とんぺい

基本的には前回のAPIViewの時とロジックは同じだブゥね!

ただ、それぞれの関数の名前が変わっているブゥ!

動作確認

師匠
師匠

では、今度はhttp://localhost:8000/api/hello-viewset/1/にアクセスしてみよう。このページにアクセスすることで、retrieve(), update(), partial_update(), destroy()メソッドの確認ができるよ。

とんぺい
とんぺい

ひとまずretrieve()はうまくいっているブゥ!

他のメソッドも確認してみるブゥ!

まとめ

師匠
師匠

本日は以下の点について学習したね。

  • Viewsets
  • router
とんぺい
とんぺい

うん!

APIViewとの使い分けの基準も理解できたブゥ!

今日もありがとうございました!

師匠
師匠

それは良かった。

では次回は、これらのViewを用いて、実際にユーザに関するAPIを作成していくよ。

とんぺい
とんぺい

おぉ!!

それは楽しみだブゥ!!

では、また次回だブゥ!

参考

コメント

  1. […] 6_Django REST framework入門 ~Viewsetsの理解~ (5/29公開) […]

  2. […] 6_Django REST framework入門 ~Viewsetsの理解~ (5/29公開) […]

タイトルとURLをコピーしました