Category/Django10 [Django] 커스텀 유저 모델 적용 확인하기(feat: Docker 환경) 현재 진행 중인 장고 프로젝트의 사용자 계정 코드를 분석한 내용을 정리한 글입니다. 현재 로컬 개발 환경과 배포 환경은 각기 다른 docker-compose 파일로 분리되어 있습니다. 로컬에서는 web이라는 컨테이너에서 장고 서버가 실행 중이기 때문에 장고 셸에 접속하기 위해선 다음 명령어를 사용합니다.docker-compose exec web python manage.py shell 코드를 보면 사용자 커스텀 유저 클래스를 정의할 때 AbstractUser를 상속받도록 한다음 users앱에 모델로 정의하였고, 설정 파일에서 AUTH_USER_MODEL 을 다음과 같이 커스텀 유저로 등록한 상태입니다.# users/models.pyclass User(AbstractUser): ...# settings/b.. 2025. 8. 13. Throttling 적용하기 UserRateThrottle(인증된 유저에 대한), AnonRateThrottle(익명 사용자에 대한), ScopedRateThrottle(해당 ID나 IP에 대한) 또는 커스텀하여 적용할 수 있습니다. Throttling을 적용하고자 하는 앱에 다음과 같이 초당 1회(테스트)로 제한하도록 설정한 후에 카테고리 목록을 가져오는 뷰셋에 추가해주었습니다.# throttling.pyfrom rest_framework.throttling import AnonRateThrottle, UserRateThrottleclass MOUThrottle(UserRateThrottle): rate = "1/s"class MOUAnonThrottle(AnonRateThrottle): rate = "1/s" from.. 2025. 7. 21. django-debug-toolbar 안 보이는 문제 해결 SQL 디버깅을 위해 django-debug-toolbar를 설치한 후에도 화면에서 툴바가 보이지 않는 문제가 있었다.print(request.META['REMOTE_ADDR']) 확인을 위해 위의 코드를 뷰에 추가하고 서버를 실행했더니 아래와 같이 출력되었다. 로컬 서버를 도커로 띄워서 사용 중이라 "localhost", "127.0.0.1"을 추가하는 것으로는 해결되지 않았던 것이다. 그래서 INTERNAL_IPS에 "172.18.0.1"을 다음과 같이 추가한 후 재시작하니 툴바가 정상적으로 출력되었다.# settings/dev.pyfrom .base import *DEBUG = TrueALLOWED_HOSTS = ["*"]INSTALLED_APPS += [ "debug_toolbar",]MID.. 2025. 7. 17. N+1 문제 해결 MOU 목록을 조회하는 API를 개발하던 중에 Django Debug Toolbar를 통해 쿼리 로그를 확인해보니 심상치 않은 패턴이 보이기 시작했습니다. 메인 쿼리가 2개의 MOU 객체를 가져왔는데, 이와 관련된 ForeignKey 및 ManyToManyField 필드들을 가져오기 위해 각각의 MOU 객체에 대해 추가적인 쿼리들이 다음과 같이 반복적으로 발생하였습니다.DEBUG (0.001) SELECT "users_user"."id", "users_user"."password", "users_user"."last_login", "users_user"."is_superuser", "users_user"."username", "users_user"."first_name", "users_user"."la.. 2025. 7. 17. django-environ란? django-environ은 Django 프로젝트에서 환경 변수를 쉽게 관리하고, 외부 설정 파일을 읽어와서 Django의 설정으로 적용할 수 있도록 도와주는 패키지입니다. 주로 환경 설정 관리를 쉽게 하기 위해 사용되며, Django 프로젝트를 다양한 환경(개발, 테스트, 운영 등)에서 유연하게 설정할 수 있도록 도와줍니다.주요 기능환경 변수 로드:django-environ은 .env 파일에 저장된 환경 변수를 불러와 Django 설정에서 사용할 수 있게 합니다. 환경 변수를 통해 비밀번호, API 키, 데이터베이스 연결 정보 등 민감한 데이터를 관리할 수 있습니다.다양한 데이터 타입 지원:문자열뿐만 아니라 정수, 부울 값, 리스트 등 다양한 데이터 타입을 환경 변수로 정의하고 이를 변환해 사용할 수 .. 2024. 9. 16. WSGI(웹 서버 게이트웨이 인터페이스, Web Server Gateway Interface)란? WSGI(웹 서버 게이트웨이 인터페이스, Web Server Gateway Interface)는 Python 웹 애플리케이션과 웹 서버 간의 표준 인터페이스를 제공하는 규격입니다. WSGI는 Python 웹 애플리케이션 개발자와 웹 서버 개발자 간의 명확한 역할 구분을 가능하게 하고, 다양한 웹 서버에서 같은 Python 애플리케이션을 구동할 수 있도록 해줍니다.WSGI의 핵심 개념서버와 애플리케이션의 분리: WSGI는 웹 서버와 웹 애플리케이션의 역할을 명확하게 구분합니다. 웹 서버는 클라이언트로부터 요청을 받아서 Python 애플리케이션에 전달하고, 애플리케이션은 그 요청에 대해 응답을 웹 서버에 반환합니다.호환성: WSGI를 사용하면 Python 애플리케이션이 다양한 웹 서버(Nginx, Apach.. 2024. 9. 15. 이전 1 2 다음