-
[Django] Rest 프레임워크로 [GET] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 8. 22:39728x90반응형
serializer란?
Django Python 객체를 JSON으로 번역해주는 번역기 같은 것
url 만들기
GET /categories
📁 categories/serializers.py
from rest_framework import serializers class CategorySerializer(serializers.Serializer): pk = serializers.IntegerField() name = serializers.CharField(required=True) kind = serializers.CharField() created_at = serializers.DateTimeField()
- CategorySerializer : categories 모델을 어떻게 보여줄지 결정하는 함수
- category들이 어떻게 JSON으로 변환될지 커스텀
📁 config/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path("rooms/", include("rooms.urls")), path("categories/", include("categories.urls")), # /categories 로 접속하면 categories.urls 로 이동한다는 의미 ]
config/urls.py에 사용할 url 파일 추가해주기
📁 categories/urls.py
from django.urls import path from . import views urlpatterns = [ path("", views.categories), ]
📁 categories/views.py
from rest_framework.decorators import api_view from rest_framework.response import Response from .models import Category from .serializers import CategorySerializer @api_view() def categories(request): all_categories = Category.objects.all() serializer = CategorySerializer(all_categories, many=True) return Response( { "ok": True, "categories": serializer.data, } )
- api를 예쁘게 보여주기 위해 @api_view() 라는 데코레이터를 사용한다.
- CategorySerializer 함수의 인자로 many=True를 넣어줌으로써 리스트를 보내는 것을 알려준다.
결과
GET /categories/1
카테고리 하나씩 확인하기 위해서는 urlpatterns 리스트에 아래와 같이 입력해주면 된다.
📁 categories/urls.py
from django.urls import path from . import views urlpatterns = [ path("", views.categories), path("<int:pk>", views.category), ]
📁 categories/views.py
@api_view() def category(request, pk): category = Category.objects.get(pk=pk) serializer = CategorySerializer(category) return Response(serializer.data)
인자로 pk를 받으면서 pk로 해당 카테고리를 찾는다.
결과
LIST'파이썬 > Django' 카테고리의 다른 글
[Django] Rest 프레임워크로 [PUT] API 만들기 (feat. api_view, serializer) (0) 2023.01.10 [Django] Rest 프레임워크로 [POST] API 만들기 (feat. api_view, serializer) (0) 2023.01.09 [Django] 어드민 액션 추가하기, 필터 만들기 (0) 2023.01.07 [Django] Template 및 View 구현하기 (0) 2023.01.05 [Django] 어드민 페이지 디테일 수정하기 (0) 2023.01.04