본문 바로가기

web/Django_rest_framework

4 update delete


이번 편에서는 입력한 post에 대한 update 와 delete를 구현하겠습니다. 


해당 포스팅의 소스는 아래의 링크에서 확인 하실수 있습니다. 


https://github.com/uiandwe/django_rest_api/tree/70b5380ca66ea6e16e7c41d303f3c68ba3317ded



1. Get과 마찬가지로 generics에서 해당 view를 상속 받아야 합니다. 


     이번에는 DestroyAPIView / UpdateAPIView 입니다. 


     자세한 설명은 http://www.django-rest-framework.org/api-guide/generic-views/#destroyapiview


     post/api/views.py 에 아래의 소스를 추가해 줍니다. 


from rest_framework.generics import ListAPIView, RetrieveAPIView, DestroyAPIView, UpdateAPIView
...
class PostUpdateAPIView(UpdateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer


class PostDeleteAPIView(DestroyAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer



2. post/api/urls.py에 endpoint에 해당하는 url를 추가 해줘야 합니다. 

    먼저 위에 추가한 views를 가져오기 위해 import 에 추가해줘야 하고 


    update 의 url은 /api/posts/포스트 아이디/edit/

    delete는            /api/posts/포스트 아이디/delete/

  

    로 하기위애 아래와 같이 소스를 추가 해줍니다. (아래의 소스는 urls.py의 모든 소스 입니다.)

from django.conf.urls import url
from django.contrib import admin

from .views import (
PostDetailAPIView,
PostListAPIView,
PostUpdateAPIView,
PostDeleteAPIView,

)


urlpatterns = [
url(r'^$', PostListAPIView.as_view(), name='list'),
url(r'^(?P<pk>\d+)/$', PostDetailAPIView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/edit/$', PostUpdateAPIView.as_view(), name='update'),
url(r'^(?P<pk>\d+)/delete/$', PostDeleteAPIView.as_view(), name='delete'),


]


3. 이제 확인!! 

     먼저 /api/posts/1/ 의 데이터를 확인해봤습니다. 


    저의 경우 타이틀은 first post / content 는 first post content 로 되어 있습니다. 



4. 이제 /api/posts/1/edit/로 가보시면 수정할수 있는 화면이 나옵니다. 

     여기에 title/content를 한글로 모두 수정해봤습니다. 

     수정후 put 버튼 클릭!




5. 다시 detail 화면으로 가시면!! 수정이 정상적으로 작동한것을 확인하실수 있습니다.  




6. 이번엔 delete! 

     /api/posts/에서 리스트를 보시면 두개가 보입니다. 



7. 여기서 /api/posts/1/delete/ 로 1번 데이터를 삭제해 보겠습니다. 

    delete 버튼 클릭!!



8. 다시 delete 버튼을 클릭해 주시면



9. /api/posts/ 화면에서 1번 데이터가 지워진것을 확인하실수 있습니다. delete도 정삭적으로 작동하네요.





10. update / delete 가 너무 간단하셧다면  

   

     update : http://www.django-rest-framework.org/api-guide/generic-views/#updatemodelmixin

     delete  : http://www.django-rest-framework.org/api-guide/generic-views/#destroymodelmixin


     부분을 보시면 더욱 재미있을 것입니다. 각각 update 와 delete를 관장하는 부분으로 나중에 update시 추가 사항이 있거나 delete시 추가 로직이 필요하면 해당 부분을 오버라이딩 하시면 됩니다. 





 

'web > Django_rest_framework' 카테고리의 다른 글

6 저장/수정시 유저 저장  (0) 2016.07.27
5. create  (0) 2016.07.27
3 get detail 구현  (0) 2016.07.25
2. get method 구현  (0) 2016.07.25
1. django rest_framework 셋팅  (0) 2016.07.25