목록Django (84)

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

[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] Throttling

Throttle 이란 특정 조건 하에 최대 호출 회수를 결정하는 클래스 입니다. 여러 이유로 지정 기간 내에 호출 횟수를 제한하는 것이죠. Rate rate 는 지정 기간 내의 최대 호출 횟수를 말합니다. 표기하는 방법은 {숫자}/{간격} 다음과 같이 표기합니다. 여기서 숫자는 지정 간격 내의 최대 요청 제한 횟수를 말하고, 간격은 횟수를 초기화하는 시간을 말합니다. 이 때 간격은 문자의 맨 앞글자만을 참조합니다. 따라서 d 나 day 는 똑같이 동작합니다. 사용할 수 있는 간격 키워드로는 다음과 같습니다. s : 초 m : 분 h : 시 d : 일 # ex "10/s" # 초당 10회 "100000/day" # 하루당 10만회 Rates 제한 메커니즘 django 에서 제공하는 Throttle 들은 모..

웹프로그래밍/DRF 2020. 1. 8. 21:47
[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