본문 바로가기

web/Django_rest_framework

(11)
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..
5. create 이번 시간에는 api중 마지막으로 남은 create를 구현합니다.post를 새롭게 만들어주는 로직을 rest_Framework로 구현하며해당 포스팅의 모든 소스는 아래에서 확인하실 수 있습니다. https://github.com/uiandwe/django_rest_api/tree/4587be2f9f104b5168aba6e8defc414178e5fb3e 1. 먼저 views.py에 create에 대한 뷰를 선언합니다.rest_Framework의 CreateAPIView 를 사용합니다. post/api/views.pyfrom rest_framework.generics import ListAPIView, RetrieveAPIView, DestroyAPIView, UpdateAPIView, CreateAPIVi..
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..