목록DRF (13)

수학과의 좌충우돌 프로그래밍

[Django] Serializer Custom Field, SerializerMethodField

django rest framework 를 사용하여 rest API 서버를 만들다보면 serializer 를 사용하지 않을 수 가 없습니다. 기본적으로 model 에 등록된 필드 값들은 Meta 클래스에 추가줌으로서 다뤄줄 수 있지만 커스텀 필드를 정의하는데 있어서는 새로운 방법이 필요합니다. 이번 포스팅에서는 간단하게 Custom Field 만드는 법에 대해서 알아보도록 하겠습니다. SerializerMethodField SerializerMethodField 를 사용하여 쉽게 커스텀 할 수 있습니다. SerializerMethodField 는 read-only field 로 값을 저장하거나 수정할 때는 사용되지 않고 조회할 때만 사용합니다. 인자로는 method_name 로 해당 필드값에 대해 정의하..

웹프로그래밍/DRF 2020. 2. 26. 15:14
[Django] CORS, Cross-Origin Resource Sharing

CORS 란? 제목에서 알 수 있듯이 CORS 는 Cross-Origin Resource Sharing 의 줄임말입니다. Cross-Origin Resource Sharing 는 한국어로 교차 출처 리소스 공유라고 하며 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조입니다. django 같은 경우, 기본적으로 8000 포트를 사용하고 있기 때문에 다른 포트를 사용하는 프론트 서버와 통신을 막고 있습니다. 따라서 CORS 를 설정하지 않은 상태로, 프론트 서버에서 통신을 요청하면 다음과 같은 에러를 확인할 수 있습니다. Access to fetch at 'http://localhost:8000/auth/login' from origin '..

웹프로그래밍/DRF 2020. 2. 14. 17:30
[Django] DRF Pagination

실제 서비스의 경우에는 레코드의 개수가 많을 것이고 이 경우 하나의 API 요청으로 모든 레코드를 받는 것은 오랜 시간이 걸리게 됩니다. 따라서 이런 경우 페이지를 나눠서 요청을 해야합니다. 다행히도 DRF 에서는 이러한 pagination 기능을 제공하고 있습니다. PageNumberPagination 과 LimitOffsetPagination pagination 을 하는데는 크게 두 가지 방법이 있습니다. 두 방법 모두 url 의 get parameter 를 이용하여 이를 지원해줍니다. 각각에 대해 알아보도록 하겠습니다. PageNumberPagination page : 몇 번째 페이지인지 표시해줍니다. 페이지는 1부터 시작합니다. page_size : 한 페이지에 몇 개의 레코드를 보여줄지 표시해줍..

웹프로그래밍/DRF 2019. 12. 30. 00:29
[Django] filtering 과 Search

목록을 조회하는 ListAPIVIew 에서 필터링하는 방법에 대해서 알아보도록 하겠습니다. 이는 CBV 의 일종이기 때문에 CBV와 익숙하시다면 쉽게 하실 수 있을 겁니다. 여러 인자 획득 filtering 을 하는데 필요한 인자들을 request 를 통해서 획득할 수 있습니다. self.request.user 현재 로그인 중인 유저에 접근할 수 있습니다. 로그인이 안 되어 있을 시에는 AnnoymousUser 인스턴스를 획득합니다. self.request.GET 요청한 get 인자들을 획득합니다. self.request.query_params self.request.GET 와 같은 값을 얻습니다. 보다 더 가독성이 높기 때문에 DRF 에서 지원하고 있습니다. self.kwargs URL Capture ..

웹프로그래밍/DRF 2019. 12. 29. 23:14