【学習記録】Django REST frameworkチュートリアル11

この記事の続きです。

programming-gogogogo.hatenablog.com

こちらの動画を見ながらPythonDjango REST framework(DRF)について勉強しています。

www.youtube.com

GenericAPIViewでPOSTメソッドが動くようになったので次にUPDATE処理を実装します。

GenericAPIViewクラスを以下のように修正します。

class GenericAPIView(generics.GenericAPIView, mixins.ListModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.RetrieveModelMixin, mixins.DestroyModelMixin):
    serializer_class = ArticleSerializer
    queryset = Article.objects.all()

    lookup_field = 'id'

    def get(self, request, id=None):
        if id:
            return self.retrieve(request)
        else:
            return self.list(request)

    def post(self, request):
        return self.create(request)

    def put(self, request, id=None):
        return self.update(request, id)

    def delete(self, request, id):
        return self.destoroy(request, id)

api_basic/urls.pyを以下のように修正します。

from django.urls import path
from .views import article_list, article_detail, ArticleAPIView, ArticleDetails, GenericAPIView

urlpatterns = [
    path('article/', ArticleAPIView.as_view()),
    path('detail/<int:id>/', ArticleDetails.as_view()),
    path('generic/article/<int:id>/', GenericAPIView.as_view(),)
]

Postmanで動作確認したところ、想定通り更新処理が成功しました。
f:id:JunpeiNakasone:20210323223403p:plain

また、generic/article/1でGETのリクエストを送るとIDが1のデータが取得できることが確認でき
f:id:JunpeiNakasone:20210323223909p:plain

generic/article/2でDELETEのリクエストを送るとID2のデータを削除できることを確認しました。
f:id:JunpeiNakasone:20210323224241p:plain

DRFではCRUD処理を実装するだけでもいくつかの実装方法があるようです。
それぞれ長所短所を勉強しつつベストプラクティスに沿った実装ができるように学んでいきたいと思います。

次はDRFでの認証の部分を実装していきます。