AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Django 인터뷰 질문 및 핵심 개념 – Part 4 요약

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

Django 프레임워크를 사용하는 개발자, 인터뷰 준비자, 웹 애플리케이션 개발에 관심 있는 중급 이상 개발자

핵심 요약

  • Django의 signals는 애플리케이션 내에서 이벤트 기반 통신을 위해 publisher-subscriber 패턴을 사용하며, pre_save, post_delete모델 라이프사이클에 따른 신호를 제공합니다.
  • MEDIA_ROOT는 사용자 업로드 파일을 저장하는 서버 파일 시스템 경로로, 개발 환경에서는 urls.pystatic() 함수를 통해 미디어 파일을 제공할 수 있습니다.
  • 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.pyMEDIA_ROOT = os.path.join(BASE_DIR, 'media'), MEDIA_URL = '/media/' 정의.

- 개발 환경에서 urls.pystatic(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는 사용자 업로드 파일 관리에 필수적입니다.
  • 캐싱 전략은 성능 최적화에 중요한 역할을 하며, 모델 상속 스타일은 데이터베이스 설계에 따라 선택해야 합니다.
  • 예외 클래스는 에러 상황을 명확히 처리하고 사용자 피드백을 제공하는 데 필수적입니다.