본문 바로가기

web

(190)
[Django rest framework] 5. test 이번 포스팅의 소스는 여기에 있습니다. - python3.6, django 2.1, django-rest-framework 3.8, 을 사용합니다. 코드 테스트는 아주 중요합니다. 테스트 코드를 능숙하게 작성하고 사용하면 코드의 의도를 보다 명확히하는데 좋을 뿐 아니라, 아키텍처의 결합도를 낮출 수 있습니다. 테스트의 일반 원칙 테스트 유닛은 각 기능의 가장 작은 단위에 집중한다. 해당 기능이 정확히 동작하는지를 증명한다. 각 테스트 유닛은 반드시 독립적이어야 한다. (다른 테스트에 영향을 끼쳐선 안된다.) 위의 원칙을 지키며, 자신의 코드를 테스트 할수 있는 테스트 코드를 만든다면, 배포 및 유지보수에 큰 도움이 됩니다. 그러면 이제부터 기본적인 테스트코드와 테스트코드에서 사용하는 mock, patch..
django RemoteUserAuthentication 는 별거 없습니다. 아니..무슨 전부 배껴 쓰기를 하나, 어떻게 모든 한국의 블로그는 딱 두줄만 써져 있는거지?? RemoteUserAuthenticationUser - 정보가 다른 서비스에서 관리될 때, Remote 인증 (장고 공식문서) - Remote-User 헤더를 통한 인증 수행 https://docs.djangoproject.com/ko/3.0/howto/auth-remote-user/#using-remote-user-on-login-pages-only ``REMOTE_USER``를 사용하여 인증하기 | Django 문서 | Django The Django Software Foundation deeply values the diversity of our developers, users, and community...
[Django rest framework] 4. filters 이번 포스팅의 소스는 여기에 있습니다. - python3.6, django 2.1, django-rest-framework 3.8을 사용합니다. django에서의 filter는 보통 query_set()을 통한, 즉 쿼리를 통해 조건을 추가 하여 데이터를 반환하는 경우가 많습니다. 이를 더욱 재사용가능하게 만든 패키지가 django-filter입니다. 이를 활용하면 간단하게 filter / order by를 추가할 수 있습니다. Using django-filter 먼저 해당 패키지를 설치 합니다. pip3 install django-filter settings.py의 rest_framework 의 옵션에 filter사용을 선언합니다. # settings.py REST_FRAMEWORK = { ........
[Django rest framework] 3. pagination 이번 포스팅의 소스는 여기에 있습니다. - python3.6, django 2.1, django-rest-framework 3.8 을 사용합니다. Django는 paginated 즉 “이전/다음”링크를 사용하여 여러 페이지로 나누어진 데이터를 관리하는데 도움이 되는 몇 가지 클래스를 제공합니다. (Paginator 클래스) 또한 DRF에서도 이러한 pagination 기능을 제공하고 있습니다. PageNumberPagination / LimitOffsetPagination pagination 설정에는 두 가지 방법이 있습니다. PageNumberPagination page : 몇 번째 페이지인지 표시해줍니다. 페이지는 1부터 시작합니다. page_size : 한 페이지에 몇 개의 레코드를 보여줄지 표시해..
[Django rest framework] 2. token / authentication 이번 포스팅의 소스는 여기에 있습니다. - python3.6, django 2.1, django-rest-framework 3.8 을 사용합니다. rest fremework는 기본적으로 템플릿 방식이 아닌, api 호출을 기반을 위주로 합니다. 또한 같은 도메인 호출도 있겠지만, 다른 도메인에서 호출하는 경우도 있습니다. 이때 해당 회원(권한)인지를 인식해야 되는 과정이 필요한데, 이를 위해 헤더에 해당 회원의 token을 포함하여 전송함으로써 서버에서는 해당 token값으로 회원을 인식합니다. 이번 포스팅에서는 DRF token 설정과 각 api에서의 auth 설정에 관한 내용이며, API 서버에 자주 사용되는 JWT(Json Web Token) 인증을 장고(django)를 사용하여 구현하려고 합니다 ..
[Django rest framework] 1. 기존 셋팅 + CRUD 이번 포스팅의 소스는 여기에 있습니다. - python3.6, django 2.1, django-rest-framework 3.8 을 사용합니다. 이번 포스팅에서는 기본 셋팅 및 간단한 모델을 생성하여, CRUD URL을 만드는것을 목표로 합니다. 1. 프로젝트 생성 및 DRF 기본 셋팅 패키지 설정을 위해 virtualenv로 관리 합니다. python 3.6 버전으로 django-env이라는 env를 생성합니다. $ sudo pip install virtualenv $ virtualenv -p python3.6 django-env $ source django-env/bin/activate env생성 및 활성화 함으로써, 전역 설치가 아닌 django-env에 패키지들이 설치되게 되어 패키지들의 버전 ..
[Django rest framework] 튜토리얼을 시작하며. 기존에 작성했던 Django rest framework의 포스팅이 너무 낮은 버전에서 구현한거라 문제가 심각하게 있었다. (물론 4년전에 한거니까 당연한 거다.) 그리고 Django REST Framework (DRF) 3.0의 tutorial만 읽고 그 동안 개발을 했었는데, DRF에서 제공하는 기능은 커녕, tutorial의 기능조차 제대로 사용하지 않고, 하나하나 모든 기능을 만들면서 시간을 낭비하고, 보기 싫은 코드를 작성하고 있었다. 그래서 이전에 작성한 포스팅은 모두 삭제 하고, 다시 글을 써 보기로 했다. 앞으로 연재할 포스팅에서는 1. 최대한 DRF의 최신 기능 및 서드 파티들을 사용하는것을 목표 2. view의 모든 기능은 viewset.modelView 를 기반하여 상속이나 재사용이 가..
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가 하나..