728x90
반응형
SMALL
APIView와 Mixins를 사용한 CRUD는 불필요한 중복이 발생했었다.
이번에는 Generic CBV (Class Based Views)의 상속을 통해 코드의 중복을 좀 더 줄여보고자 한다.
✅ models.py
from django.db import models
from django.conf import settings
# Create your models here.
class Blog(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
이전에 사용했던 모델과 동일하게 만들어준다.
✅ serializers.py
from .models import Blog
from rest_framework import serializers
class BlogSerializer(serializers.ModelSerializer):
class Meta:
model = Blog
fields = '__all__'
serializers도 동일하게 해준다.
✅ views.py
from .models import Blog
from .serializer import BlogSerializer
from rest_framework import generics
# Blog의 목록을 보여주는 역할
class BlogList(generics.ListCreateAPIView):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
# Blog의 detail을 보여주는 역할
class BlogDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
Generic CBV를 사용해서 views.py를 작성하면 코드가 훨씬 간결해진 것을 알 수 있다.
APIView와 mixins를 사용하면 중복코드가 많아 코드가 길어지는 불편함이 있었다.
코드는 훨씬 줄었지만, 동일하게 위와 같은 화면을 볼 수 있다.
참고
728x90
반응형
'Python > DRF' 카테고리의 다른 글
[DRF] 게시판 기능(CRUD) 구현하기 (0) | 2023.01.17 |
---|---|
[DRF] 커스텀 유저 구현하기(회원가입/로그인) (0) | 2023.01.14 |
[DRF] ViewSets으로 CRUD 구현하기 (0) | 2023.01.12 |
[DRF] Mixins로 CRUD 구현하기 (0) | 2023.01.12 |
[DRF] APIView로 CRUD 구현하기 (1) | 2023.01.12 |