🙌

【Django】Pythonで作るRest API【11ViewSets】

2023/01/29に公開

【11ViewSets】

YouTube: https://youtu.be/mEcvCwJLC4g

https://youtu.be/mEcvCwJLC4g

今回は「ViewSets」を使用して、
「Post」モデルのビューを作成します。

https://www.django-rest-framework.org/api-guide/viewsets/

rest_frameworkのビューはいくつか種類があるのですが、
すべての機能を持っているのが「ViewSets」で
そこから少しづつ機能を削っていって
最終的にAPIとして必要最低限の機能を持ったものが
「APIView」となります。

「ViewSets」はカスタマイズが難しいので、
基本的には「APIView」が使用されるかと思います。

まず前回作成した、シリアライザーですが、
複数形ではないので、動画では最後の「s」を削除しています。

myapp/posts/serializers.py
from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
  class Meta:
    model = Post
    fields = '__all__'

次に新しくビューの設定を行います。

myapp/posts/views.py
from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer

# Create your views here.
def helloWorld(request):
  # return HttpResponse('Hello World')
  hello = 'hello'
  return render(request, 'posts/index.html', {})

class PostViewSet(viewsets.ModelViewSet):
  queryset = Post.objects.all()
  serializer_class = PostSerializer

ビューの設定ができましたら、
「urls.py」にビューの追加を行います。

myapp/posts/urls.py
from django.urls import path, include
from .views import helloWorld, PostViewSet
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'posts', PostViewSet, basename='posts')


urlpatterns = [
    path('hello/', helloWorld, name='hello'),
    path('', include(router.urls))
]

こちらの設定ができましたら、ローカルサーバーを起動して、

http://localhost:8000/posts/posts/

ブラウザでこちらのURLにアクセスします。

Discussion