Django REST framework のチュートリアルやってみた②

前回viewを関数ベースで作成しましたが、今回はそれをクラスベースに変えてみようと思います。

view

from .models import Blog
from .serializers import BlogSerializer
from rest_framework import generics


class BlogList(generics.ListCreateAPIView):
    queryset = Blog.objects.all()
    serializer_class = BlogSerializer


class BlogDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Blog.objects.all()
    serializer_class = BlogSerializer

django REST framework 最強説がここに浮上します。ListCreateAPIViewとRetrieveUpdateDestroyAPIViewを継承したら三行でAPIの完成です。チュートリアルにはシンプルなAPIviewを継承してリクエストのメソッドごとに実装していくとか様々なmixinを使って実装するとか細かいことが書いてあるので気になる方はそちらを参照してください。個人的にはListCreateAPIViewとRetrieveUpdateDestroyAPIViewの2つを継承するやり方さえ知っておけばとりあえず問題ない気がする。

url

urls.pyをクラスベースに対応させます。

from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from .views import BlogList, BlogDetail

urlpatterns = [
    path('blog/', BlogList.as_view()),
    path('blog/<int:pk>/', BlogDetail.as_view()),
]

urlpatterns = format_suffix_patterns(urlpatterns)

動作確認

runserverしてブラウザで確認してみます。http://localhost:8000/blog/にアクセスすると以下のような画面が表示されます。クラスベースでも実装できました。

さらにスクロールしていくとフォームがありここからpostリクエストを送信してデータの追加が行えるようになっています。

またhttp://localhost:8000/blog/1/にGETを送るとid1のデータがレスポンスされ、削除、更新ができます。

参考

3 - Class based views - Django REST framework
Django, API, REST, 3 - Class based views

コメント

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