이번 편에서는 입력한 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 |