WEB/Django prac

[Django prac][DRF with Single Model] 7. POST

bay07 2024. 4. 15. 16:25

POST

 

▶ 게시글 데이터 생성하기 

성공했을 경우 201 Created 응답

실패했을 경우 400 Bad request 응답


# articles > views.py 

article_list view 함수의 구조를 변경한다

(method에 따라서 분기처리를 한다)

더보기

 

from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status

from .models import Article
from .serializers import ArticleListSerializer, ArticleSerializer

@api_view(['GET', 'POST'])
def article_list(request):
    if request.method == 'GET':
        articles = Article.objects.all()
        serializer = ArticleListSerializer(articles, many=True)
        return Response(serializer.data)
    
    elif request.method == 'POST':
        serializer = ArticleSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

@api_view(['GET'])
def article_detail(request, article_pk):
    article = Article.objects.get(pk=article_pk)
    serializer = ArticleSerializer(article)
    return Response(serializer.data)

# 서버 켜기 

save all 

python manage.py runserver

 

POST로 바꾼 후에 Send 버튼 누르기 

http://127.0.0.1:8000/api/v1/articles/

 

그러면 id가 21인 새로운 애가 만들어진다. 

그 데이터를 우리에게 그대로 제공해주는 것 

(원래 20개였는데, 이제 21개가 되었다)

 

DB에서 봤을 때도, 잘 저장되어 있는 걸 알 수 있다.