본문 바로가기

web/Django_rest_framework

(21)
django Rest framework APIView / Mixins / Viewset - 아래의 코드는 python2.7 , restframework 3.6.4 의 내용입니다. 최신버전의 내용과 다른 부분이 있습니다. 1.APIView APIView -> 클래스 기반 (CBV : class base view) @api_view -> 함수기반 (FBV : function base view) APIView는 여러가지 기본 설정을 제공합니다. ( 직렬화, 인증, 사용량 제한, 권한 등 ) CVB로 작성시 http 메소드에 해당하는 함수를 만들어줘야 합니다. 해당 함수 명은 지정되어 있으며, http의 메소드 명과 동일합니다. (함수명이 틀릴 경우 해당 메소드는 사용할수 없는 메소드로 간주 합니다. ) url에는 파라미터인자를 선언하므로 인자 pk를 받아야 하는 get/put/delete가 하나..
django rest_freamework에서 리턴값을 json으로 보내자. 1. 모든 API를 json으로 리턴한다 가장 쉽고 빠른 방법. Settings.py 에 세팅하면 자동으로 json으로 리턴합니다. REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ) } 단 위의 방법은 모든 API에 대하여 json 형식으로 대응됩니다. 즉 rest_freamework에서 지원하는 템플릿을 사용할 수 없습니다. 2. depoly 따라 설정하고 한다. 예를 들어 개발 및 test 일 경우엔 setting_develop.py로 만들어서 REST_FRAMEWORK의 옵션을 설정하지 않는 방식입니..
django에서 swagger로 한다면 drf_yasg 는 왠만하면.... 장담한다. 기본 기능 이외의 기능을 찾는다면 웬만하면 쓰지 말자. 그냥 그 시간에 만드는게 더 빠르다. 정말이다. swagger에서 지원하는 기능을 이제야 만들고 있으므로 큰 기대 말고, 기본 기능외는 찾지 말고 그냥 하나 만들어서 쓰는 게 당신에게 이익이다.
django REST_FRAMEWORK login REST_FRAMEWORK에서 오른쪽 상단의 로그인을 통해 로그인을 해도 세션이 유지가 안되고, 유저 객체가 AnonymousUser만 뜬다면 setting 의 REST_FRAMEWORK 속성에 auth관련 속성을 추가해 주면 된다.REST_FRAMEWORK = { ....... 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.SessionAuthentication' )}
9. href 이번 시간에는 rest api 생성시 중요한!!(이라 쓰고 항상 까먹는 부분인..) 참조 url을 만들어보겠습니다.각 인스턴스마다의 detail url / update url / delete url 를 만들어보겠습니다. 1. post/api/serializers.py에 list 용 시리얼라이져를 따로 만들어줍니다. Meta의 fields 부분을 보면 url이 추가된것을 볼수 있습니다. 이때 url은 serializers의 HyperlinkedIdentityField를 씁니다. 여기서 view_name은 현재 각 urls.py에 쓰였던 name을 써주면 알아서 url을 만들어줍니다. 여기서 쓰인 posts-api는 /django-rest-api/urls.py에 쓰인 /api/posts/가 입니다. 그리고 ..
8 pagination 이번 포스팅은 앞써 post list화면의 페이지 네이션을 적용하겠습니다. 해당 포스팅에서의 소스파일은 아래 링크에서 확인 가능합니다.https://github.com/uiandwe/django_rest_api/tree/a923a4cc3c7666c46685021c30ae78292abd91eb 1. 먼저 /posts/api/views.py 파일에서 rest_framework.pagination 과 PostListAPIView()함수에 페이지네이션을 사용한다는 선언을 해줘야 합니다. pagination_class는 사용자가 지정한 limit 값만큼 해당 데이터갯수를 혹은 offset으로 지정한 해당 페이지를 돌려줍니다.자세한 내용은 링크 참조!http://www.django-rest-framework.org..
7 search 이번 포스팅은 search에 대한 전반적인 로직을 포스팅할 예정입니다. 1. 먼저 로그인한 유저의 데이터만 볼수 있도록 list 부분을 수정해 보도록 하겠습니다. 현재 저장된 데이터는 아래 화면처럼 4개 입니다. 3개는 1번인 admin / 1개는 3번인 testuser 입니다. 2. post/api/views.py 에서 PostListAPIView()에 get_queryset()을 오버라이딩 합니다. get_queryset()은 GeneriView에서 어떤 데이터를 가져올 것인지에 대한 query를 총괄하는 함수 입니다. 기존에 사용하던 queryset이 바로 get_queryset 라고 보시면 됩니다. 파라미터중 self.request 를 통해서 파라미터를 받아서 처리하게끔 하면 됩니다. 자세한 사항..
6 저장/수정시 유저 저장 이번 포스팅은 기존의 create 와 update시 저장되는 유저의 데이터를 현재 로그인한 유저로 저장되게끔 하는 방법입니다. 기존의 로직대로라면 처음 저장한 유저의 데이터로 저장되며 수정이 되지 않던 문제를 보강합니다. 해당 포스팅의 모든 소스는 아래 링크에서 확인 가능합니다. https://github.com/uiandwe/django_rest_api/tree/726c4eef6b39872dc3cbd9ca5823e637959aded0 1. 먼저 저장하는 유저를 보기위해서 시리얼라이져에 유저 필드를 추가 합니다. post/api/serializers.py'user' 추가fields = [ 'pk', 'user', 'title', 'content', 'created_at', ]2. create에 perfo..