ModelViewSetとRouters
CRUDルートを自動生成します
「ModelViewSetとRouters」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。
CRUDの繰り返し問題
一覧表示、作成、取得、更新、削除を手作業で実装すると、ほとんど同じコードが大量に必要になります。ViewSetを使えば、これらすべてを1つのすっきりしたクラスにまとめられます。
ModelViewSetの紹介
ModelViewSetを使うと、ほとんどコードを書かずにモデルのCRUD全体を実装できます。querysetとserializerを指定すれば、残りは処理してくれます。
from rest_framework import viewsets
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer2つの属性が処理を担う
この2行だけでクラス全体を定義できます。querysetは対象となる行を指定し、serializer_classはそれらをJSONに変換する方法を指定します。📦
自動的に使えるアクション
ModelViewSetは5つのactionsを提供します。list、create、retrieve、update、partial_update、destroyです。これらを手作業で1つも実装する必要はありません。
Routerが存在する理由
ViewSetはアクションをまとめますが、URLの接続は別途必要です。routerはViewSetを読み取り、すべてのURLパターンを自動生成します。
DefaultRouterへの登録
DefaultRouterを作成し、プレフィックスを指定してViewSetを登録すると、URL一式を自動的に構築してくれます。
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'books', BookViewSet)RouterのURLを組み込む
routerはパターンの準備済みリストであるrouter.urlsを公開します。これをurlpatternsに追加すれば、エンドポイントがすぐに有効になります。
urlpatterns = [
path('api/', include(router.urls)),
]作成されたURL
1つのViewSetを登録するだけで、一覧表示と作成用の/books/に加え、取得・更新・削除用の/books/{id}/が利用できるようになります。🚀
HTTPメソッドとアクションの対応
RouterはHTTPメソッドをアクションに対応付けます。GETは一覧表示、POSTは作成、idを指定したGETは取得、PUTまたはPATCHは更新、DELETEは削除です。1つのViewSetで6つの動作を実現できます。
DefaultRouterとSimpleRouterの違い
DefaultRouterは、エンドポイントを一覧表示する便利なAPIルートビューを追加します。より簡潔なURL構成にしたい場合は、SimpleRouterがそれを省略します。
カスタムアクションの追加
追加のエンドポイントが必要ですか。@actionデコレーターを使えば、クラスの外に出ることなくViewSetにカスタムルートを追加できます。
from rest_framework.decorators import action
@action(detail=True, methods=['post'])
def favorite(self, request, pk=None):
...クイックチェック
ViewSetとRouterの関係をしっかり確認しましょう。
まとめ:数行でCRUD
ModelViewSetとRouterを組み合わせると、2つの短いクラスだけで完全なCRUD APIを構築でき、きれいなURLも自動生成されることを学びました。よくできました。🎉
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ModelViewSetとRouters」レッスンは無料ですか?
はい。「ModelViewSetとRouters」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。
「ModelViewSetとRouters」で何を学びますか?
CRUDルートを自動生成します ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Django Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ModelViewSetとRouters」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDjango Academyレッスンでコードを書いて実行できますか?
はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ModelViewSetとRouters
- PermissionsとThrottling
- Token認証とJWT認証
- Filtering、Search、Pagination