🙌
【Django】Pythonで作るRest API【11ViewSets】
【11ViewSets】
YouTube: https://youtu.be/mEcvCwJLC4g
今回は「ViewSets」を使用して、
「Post」モデルのビューを作成します。
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))
]
こちらの設定ができましたら、ローカルサーバーを起動して、
ブラウザでこちらのURLにアクセスします。
Discussion