Django Academy · レッスン

ModelViewSetとRouters

CRUDルートを自動生成します

レッスン 1/413 ステップ

「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 = BookSerializer

2つの属性が処理を担う

この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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ModelViewSetとRouters
  2. PermissionsとThrottling
  3. Token認証とJWT認証
  4. Filtering、Search、Pagination
← Django Academyに戻る