본문 바로가기

web

(196)
pytest 시 여러개의 디비 사용하기 참고로 pytest-django 에서 여러개의 디비를 사용하도록 하는 공식적인 버전은 4.3.0 부터 입니다. 해당 버전이 아닐경우 다른 결과가 나올수 있습니다. 1. 테스트 격리! 일단 나의 진행중인 프로젝트에서는 하나의 django에서 4개의 디비를 바라보고 있다. (........) 사실 한 프로젝트에서 여러개의 디비를 사용하는게 이상한 설계인데, SPOF나기 딱 좋은 지점이기 때문이고, 관리도 어렵다. 특히나 테스트시에는 디비를 않쓰는게 가장 베스트이고 (외부 연결점이 없을수록 격리성이 좋다) 테스트시에 디비를 어쩔수 써야 한다면 1번 디비를 테스트 -> 2번 디비를 테스트 -> .. 하는 식으로 단 하나의 디비만을 테스트 하는것을 추천한다. 각 디비를 초기화 및 셋팅하는데 걸리는 시간과 각각의 ..
raw query + group by 그리고 다른 디비에 접속 django 사용 중 3단 콤보로 맞아서 글로 남김 1. raw query + group by 에러 1 2 3 raw_query = "select date, sum('price') from test_table group by date" Model.objects.raw(raw_query) Colored by Color Scripter cs 실행시 만일 에러가 아래와 같다면 Raw query must include the primary key django에서는 Model.objects.raw() 실행은 ORM 요청이기 때문에 raw 쿼리 요청 시에도 primay key를 요구하는데, 문제는 group by 문구가 들어가면 select 1 id, sum('price') from test_table group ..
Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'. - django 3.2 version up 기존 django 2.*에서 3.2로 업데이트 시 실행을 하면 다음과 같은 wanning이 나옵니다. Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'. HINT: Configure the DEFAULT_AUTO_FIELD setting or the VendorsConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'. django 3.2부터는 모델의 primary key의 속성을 설정해 줘야 합니다. 기본 키의 설정은 DEF..
How Django process a request https://www.b-list.org/weblog/2006/jun/13/how-django-processes-request/ 의 글을 번역한 글입니다. 해당 글은 2006년에 쓰여진 글로 현재 django 버전과 다를 수 있습니다. 들어온다!! 핸들러가 있어 그린라이트! 이제부터 시작. 미들웨어 1 라운드 해결할 시간 미들웨어 2라운드 Into the view 템플릿 django의 템플릿 구조 응답시간(Response time) 미들웨어 처리 3 예외 아직도 응답하지 않았어? 미들웨어 처리 4: 마지막 단계 응답 1. 들어온다!! 2가지 방법으로 장고 서버를 호출한다. 아파치/모드파이선(apache/mod_python) 서버가 셋업되어있을 경우, 모드 파이선이 리퀘스트를 장고에게 전달하고 django..
JWT에서 Django request.user 까지의 여정 Django에서 request의 유저를 알기 위해선 request.user를 통해 알 수 있다. Django에서 지원하는 session 방식의 로그인 / rest_framework에서 지원하는 JWT 등 로그인을 하면 request.user의 정보를 가져올 수 있다. 이번 글은 request.user에 정보가 들어가기까지 어떤 동작을 하는지 살펴보는 글입니다. django == 2.1.2 // djangorestframework == 3.9.0 에서 진행하였습니다. 해당 버전에 따라 소스 코드가 달라질 수 있습니다. 1 번은 일반 로그인 방식이며, 2번은 JWT 방식이다. 1번 일반 로그인 방식은 먼저 cookie에 있는 세션값을 request.session에 저장하고 session 값을 통해 유저 정보..
[Django rest framework] 번외. swagger 적용하기 API 문서는 프로젝트를 수행하는 규모와 방식에 따라 각기 다른 목적으로 다양한 문서를 작성하게 됩니다. 수많은 프로젝트에서 그렇듯 이런 문서는 조금만 방심하면 유지보수되지 않는 문서가 되곤 합니다. 여러가지 이유로 유지보수되지 않는 문서로 인해 발생하는 유산(legacy)은 가끔(거의 항상) 프로젝트에 악영향을 주곤 합니다. 그중에 API 문서에 대해 공유해보려 합니다. 앞서 만든 API들을 다른 개발자분들과 함께 사용하기 위해선 문서가 필요합니다. 자동으로 문서화를 해줄 package는 drf-yasg를 사용합니다. drf-yasg 패키지 설치 $ pip3 install drf-yasg settings.py 설정 #settings.py INSTALLED_APPS = [ ...... "drf_yasg"..
[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...