🙄

【Django】Pythonで作るRest API【13API View】

2023/01/31に公開

【13API View】

YouTube: https://youtu.be/wCqCzR7Md7s

https://youtu.be/wCqCzR7Md7s

今回は「API View」を使用して、
「Post」のビューを作成していくのですが、

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

「API View」にはクラスベースビューに継承して作成する方法と、
ファンクションベースビューにデコレーターを設定して作成する方法があります。

今回は、ファンクションベースビューにデコレーターを設定して作成する方法で
実装を行います。

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
from rest_framework.decorators import api_view
from rest_framework.response import Response

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

@api_view(['GET'])
def getAllPosts(request):
  posts = Post.objects.all()
  serializer = PostSerializer(posts, many=True)

  return Response(serializer.data)

class PostViewSet(viewsets.ModelViewSet):
  queryset = Post.objects.all()
  serializer_class = PostSerializer
myapp/posts/url.py
from django.urls import path, include
from .views import helloWorld, PostViewSet, getAllPosts
from rest_framework.routers import DefaultRouter

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

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

ビューとURLの設定ができましたら、
ローカルサーバーを起動して表示の確認を行います。

http://localhost:8000/posts/

Discussion