Django 인터뷰 질문 및 핵심 개념 – Part 4 요약
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Django 프레임워크를 사용하는 개발자, 인터뷰 준비자, 웹 애플리케이션 개발에 관심 있는 중급 이상 개발자
핵심 요약
- Django의
signals
는 애플리케이션 내에서 이벤트 기반 통신을 위해 publisher-subscriber 패턴을 사용하며,pre_save
,post_delete
등 모델 라이프사이클에 따른 신호를 제공합니다. MEDIA_ROOT
는 사용자 업로드 파일을 저장하는 서버 파일 시스템 경로로, 개발 환경에서는urls.py
에static()
함수를 통해 미디어 파일을 제공할 수 있습니다.- Django의 캐싱 전략은 전체 사이트 캐싱, 뷰 캐싱, 템플릿 조각 캐싱, 하위 레벨 API 캐싱으로 구성되어 동적 페이지 성능 개선에 기여합니다.
- 모델 상속 스타일은 추상 기본 클래스, 다중 테이블 상속, 프록시 모델로 나뉘며, 각각 데이터베이스 테이블 생성 여부에 따라 선택됩니다.
- Django는
ObjectDoesNotExist
,ValidationError
,Http404
등 다양한 예외 클래스를 제공하여 애플리케이션의 안정성을 높입니다.
섹션별 세부 요약
1. Django의 Signal 메커니즘
- Signal 종류:
- 모델 Signal: pre_init
, post_save
, m2m_changed
등 모델 인스턴스 생성/변경/삭제 시 발생.
- 요청/응답 Signal: request_started
, request_finished
는 HTTP 요청/응답 주기 동안 실행되며, got_request_exception
은 예외 발생 시 처리.
- 관리 명령 Signal: pre_command
, post_migrate
는 관리 명령 실행 전후에 실행되며, 데이터 마이그레이션 등에 활용.
- 인증 Signal: user_signed_up
, password_changed
등 사용자 인증 과정에서 발생.
- 사용 목적: 애플리케이션의 결합도를 낮추고 이벤트 기반 통신을 가능하게 함.
2. MEDIA_ROOT 설정 및 사용
- 설정 방법:
- settings.py
에 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
, MEDIA_URL = '/media/'
정의.
- 개발 환경에서 urls.py
에 static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
추가.
- 기능: 사용자 업로드 파일(이미지, 문서 등)을 저장 및 제공하는 파일 시스템 경로와 URL 매핑.
3. Django의 캐싱 전략
- 캐싱 종류:
- Per-site Cache: 전체 사이트 캐싱, 설정이 가장 간단.
- Per-view Cache: 개별 뷰 캐싱, @cache_page
데코레이터 사용.
- Template Fragment Caching: 템플릿의 일부만 캐싱.
- Low-level Cache API: 개발자가 직접 캐시 조작 가능.
- 효과: 동적 페이지 요청 최소화로 성능 향상.
4. Django 모델 상속 스타일
- 추상 기본 클래스: 공통 필드를 공유하지만 데이터베이스 테이블 생성 없음.
- 다중 테이블 상속: 상속 계층의 각 모델에 별도 테이블 생성.
- 프록시 모델: 상속된 모델의 파이썬 레벨 동작 변경 가능 (예: 정렬 방식 수정).
5. Django 예외 클래스
- 주요 예외:
- ObjectDoesNotExist
: 데이터베이스에 없는 객체 접근 시 발생.
- ValidationError
: 폼 검증 실패 시 발생.
- Http404
: 요청된 리소스가 없을 때 발생.
- IntegrityError
: 데이터베이스 무결성 위반 시 발생.
- PermissionDenied
: 사용자가 권한 없는 작업을 시도할 때 발생.
- 사용 목적: 애플리케이션의 예외 처리 및 안정성 확보.
결론
- Django의
signals
는 애플리케이션 이벤트를 효율적으로 처리하기 위해 사용되며,MEDIA_ROOT
는 사용자 업로드 파일 관리에 필수적입니다. - 캐싱 전략은 성능 최적화에 중요한 역할을 하며, 모델 상속 스타일은 데이터베이스 설계에 따라 선택해야 합니다.
- 예외 클래스는 에러 상황을 명확히 처리하고 사용자 피드백을 제공하는 데 필수적입니다.