Django

파이썬 장고 실무 심화 2주차 3_PUT, DELETE

끈끈 2023. 4. 19. 20:17

https://sw-ing.tistory.com/88

 

파이썬 장고 실무 심화 2주차 2_serializer, GET, POST

serializer를 사용하면 json 형태의 string으로 만들어 줌 GET articles > serializers.py: from rest_framework import serializers from articles.models import Article class ArticleSerializer(serializers.ModelSerializer): class Meta: model = Article

sw-ing.tistory.com

 


 

GET

 

articles > urls.py:

urlpatterns = [
    path('<int:article_id>/', views.articleDetailAPI, name="article_view"),
]

 

articles > views.py:

from rest_framework.generics import get_object_or_404

@api_view(['GET', 'PUT', 'DELETE'])
def articleDetailAPI(request, article_id):
    if request.method == 'GET':
        article = get_object_or_404(Article, id=article_id)
        serializer = ArticleSerializer(article)
        return Response(serializer.data)

 

Article Detail API

 


 

PUT

 

articles > views.py:

@api_view(['GET', 'PUT', 'DELETE'])
def articleDetailAPI(request, article_id):
    if request.method == 'GET':
        article = get_object_or_404(Article, id=article_id)
        serializer = ArticleSerializer(article)
        return Response(serializer.data)
    elif request.method == 'PUT':
        article = get_object_or_404(Article, id=article_id)        
        serializer = ArticleSerializer(article, data=request.data) # article을 request.data로 바꿔준다!!
        if serializer.is_valid(): # POST 할 때와 똑같
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)

 

Article Detail API

 


 

DELETE

 

articles > views.py:

@api_view(['GET', 'PUT', 'DELETE'])
def articleDetailAPI(request, article_id):
    if request.method == 'GET':
        article = get_object_or_404(Article, id=article_id)
        serializer = ArticleSerializer(article)
        return Response(serializer.data)
    elif request.method == 'PUT':
        article = get_object_or_404(Article, id=article_id)        
        serializer = ArticleSerializer(article, data=request.data) # article을 request.data로 바꿔준다!!
        if serializer.is_valid(): # POST 할 때와 똑같
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
    elif request.method == 'DELETE':
        article = get_object_or_404(Article, id=article_id)
        article.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

 

 

Article Detail API