Server/Django REST framework 3

[Django] Reverse relations과 Related_name

1:N 이나 N:M 관계가 성립할 때, 우리는 역참조를 할 수 없다. 하려면 classname_set을 이용해서 접근할 수 있는데 이때 이름을 지정하는 것이 related_name이다. related_name가 필수인 경우가 존재하고, 그것은 정확히 어떤 field를 갖고 와야하는지 명확하지 않을때이다. 앞으로 프로젝트가 커지면 1:N이나 N:M 관계를 갖는 테이블이 많이 생긴다. 이때, related_name는 이를 해결해 줄 대표적인 방법이다. https://velog.io/@gillog/DB-11-1N-NM-관계 [DB] 1:1, 1:N, N:M 관계 관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다.엔..

[Django] DRF Pagination

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

[Django] django-rest-knox 란?

django-rest-knox django-rest-knox는 장고(django)의 rest 인증 모듈입니다. Knox는 Django REST Framework의 인증을 보다 쉽게 사용할 수 있도록 도와줍니다. 작은 노력으로 REST 기반의 애플레이션에서 공통적으로 사용하는 패턴을 따르며 안전한 연결을 구성할 수 있는 것이죠. Knox의 인증은 DRF에 내장된 TokenAuthentication과 흡사하게 토큰 기반으로 작동하면서, 기본 DRF이 가지고 있는 몇 가지 문제들을 보완해 줍니다. DRF 토큰은 단일 사용자로 제한되어 있습니다. 이런 제약사항은 토큰이 공유되거나, 여러 기기에서 안전한 연결을 어렵게 만듭니다. 또 서버 측에서 로그아웃될 경우 모든 기기에서 로그아웃되어 버리기도 합니다. Knox..