ko ko en en de en en ko ko en en ko ko ko ko en ko en ko en ko ru ko en en en en ko en en en en en en en en en en
Django Restful framework Tutorial 3 · 초보 웹 프로그래머
Home About Algorithm Aws Book Deploy Django Docker Restful Git Html&Css IntroducingPython Other Project SQL UiPath
16 Mar 2018 • Restful
SomeList의 get은 리스트를 가져 오는 것이고, post는 리스트에 추가 하는 것이었다. 하지만 DetailView에서는 get이 해당 리스트중 하나를 조회, put은 업데이트 delete는 삭제를 한다. 이것이 RestAPI에서 가장 기본적인 구조이다.
# views.py class SomeDetail(APIView): def get_object(self, pk): somemodel = get_object_or_404(SomeModel, pk) return somemodel def get(self, request, pk): somemodel = self.get_object(pk) serializer = SnippetSerializer(somemodel) return Response(serializer.data) def post(self, request, pk): somemodel = self.get_object(pk) serializer = SnippetSerializer(somemodel, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def delete(self, request, pk): somemodel = self.get_object(pk) somemodel.delete() return Response(status=status.HTTP_204_NO_CONTENT)
# urls.py urlpatterns = [ ... path(' /', SomeDetail.as_view()), ]
get_object_or_404를 rest_framwork에서 가져오는 것은 에러메시지가 json형태로 반환되기 때문이다.
Response에서 status를 돌려 주지 않으면 기본 값인 HTTP_200_OK이 간다.
URL의 접미어를 통해 다른 포맷 제공하기
포맷의 접미어를 URL 형태로 전달 받으려면, URL을 다룰수 있어야 함. http://example.com/api/items/4.json 이런 형태는 json형태로 받고 싶은 것이고 만약 1.xml이면 xml형태로 받고 싶은 것이다. 그럴려면 각 기능 함수에 foramt=None이라는 인자를 넣어 준다.
class SomeList(APIView): def get(self, request, format=None): ... def post(self, request, format=None): ...
그리고 urlpatterns를 한번 감싸야 한다.
from rest_framework.urlpatterns import format_suffix_patterns ... urlpatterns = format_suffix_patterns(urlpatterns)
그리고 xml에 대한 테스트를 위해 djangorestframework-xml을 설치하자
그리고 셋팅을 하자 config/settings에 기본설정과 추가 설정을 넣자.
REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework_xml.renderers.XMLRenderer', ), 'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', 'rest_framework.parsers.FormParser', 'rest_framework.parsers.MultiPartParser', 'rest_framework_xml.parsers.XMLParser', ) }
그리고 http://localhost:8000/somemodel/?format=xml을 하면 데이터가 xml로 바뀌어서 온것을 볼 수 있다.
comments powered by Disqus.
django-filters와 DRF의 filters 같이 사용하기 02 May 2018
Django Restful framework Testing 26 Mar 2018
Django Restful framework TokenFacebookLogin 22 Mar 2018
Django Restful framework TokenAuthentication 20 Mar 2018
Django Restful framework Tutorial 6 19 Mar 2018
Django Restful framework Tutorial 5 19 Mar 2018
Django Restful framework Tutorial 4 16 Mar 2018
Django Restful framework Tutorial 3 16 Mar 2018
Django Restful framework Tutorial 2 15 Mar 2018
Django Restful framework Tutorial 1 15 Mar 2018
Django Restful framework 기초 13 Mar 2018