[Series1. DashBoard 만들기] - 13. API View 테스트 (4)

django_apps·2021년 9월 25일
0

django apps

목록 보기
13/17
post-thumbnail

유저정보 삭제 (DELETE) API 테스트 하기

본 포스팅에서는 PostUser Model의 데이터를 삭제하기 위해 DELETE API 를 테스트 해보기로 한다.

저번 포스팅에서도 작업하였듯이 API 를 작성하기 위해서 아래코드가 필요하다.

  1. Router 작성 (URL 라우팅)
from dashboard_core.forms import PostUserForm

from rest_framework.routers import DefaultRouter
from dashboard_core.views import PostViewSet, PostUserViewSet

router = DefaultRouter()
router.register(r"posts", PostViewSet, basename="post_status")
router.register(r"users", PostUserViewSet, basename="user_status")
  1. View 작성 (로직)
from rest_framework import response
from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from dashboard_core.models import Post, PostUser
from dashboard_core.serializers import PostSerializer, PostUserSerializer, PostUserGetSerializer, PostUserPostSerializer

# Create your views here.
class PostViewSet(ModelViewSet):
  queryset = Post.objects.all()
  serializer_class = PostSerializer
  permission_classes = [IsAuthenticatedOrReadOnly]

class PostUserViewSet(ModelViewSet):
  queryset = PostUser.objects.all()

  def get_serializer_class(self):
    if self.action == 'list':
      return PostUserSerializer
    elif self.action == 'create':
      return PostUserPostSerializer
    elif self.action == 'update':
      return PostUserPostSerializer
    elif self.action == 'delete':
      return PostUserPostSerializer
    else:
      return PostUserSerializer
  1. Serializers 작성 (클라이언트에게 보내기 위해 데이터 처리)
from django.db.models import fields
from rest_framework import serializers

from dashboard_core.models import Post, PostUser

class PostSerializer(serializers.ModelSerializer):
  title = serializers.CharField()
  contents = serializers.StringRelatedField()
  created_at = serializers.DateTimeField()

  class Meta:
    model = Post
    fields = "__all__"

class PostUserSerializer(serializers.ModelSerializer):
  username = serializers.CharField()

  class Meta:
    model = PostUser
    fields = "__all__"

class PostUserGetSerializer(serializers.ModelSerializer):
  username = serializers.CharField()

  class Meta:
    model = PostUser
    fields = ("id", "username", "password",)

class PostUserPostSerializer(serializers.ModelSerializer):

  class Meta:
    model = PostUser
    fields = ("username","password",)

  def validate_password(self, value):
    if len(value) < 7:
      raise serializers.ValidationError("The password has to be at least 7 characters long!")
    return value

위처럼 기본적인 위의 코드는 이미 들어가 있으므로

우리는 테스트만 해보면 될 것이다.

서버를 다음 커맨드와 같이 올린다.

python manage.py runserver

그리고 Advanced REST client 를 열고 아래와 같이 작성한다.

보내고 나면 현재 데이터를 알 수 있다.

나온 데이터들 중, id 가 4인 데이터가 존재한다.

이제부터 위 아이디에 해당하는 데이터를 지워보겠다.

위처럼 DELETE Request를 작성하고 전송하면 아래처럼 메시지가 돌아온다.

자, 실제 데이터를 다시 한번 확인해보자.

4번째 아이디를 가진 데이터가 삭제되었음을 알 수 있다.

Thank you!

profile
django developer

0개의 댓글