Django 프론트& 백엔드 개발

앱(App) 구조 정리

Data Jun 2026. 1. 3. 13:47

Django에서 하나의 웹 서비스는 Project와 App의 조합으로 구성됩니다.
이번 글에서는 App의 개념, 생성 방법, 기본 구조를 빠르게 정리합니다.

 

1. Project와 App의 차이

Django에서는 기능 단위를 App으로 나누어 구현합니다.

  • Project
    • 하나의 웹 서비스 전체
    • 여러 개의 App + 설정 파일로 구성
  • App
    • 특정 기능 단위 (예: 게시판, 회원, 주문 등)
    • 하나의 App은 여러 Project에서 재사용 가능

즉,

여러 App을 모아 하나의 Project를 만든다고 이해하면 됩니다.

 

2. App 생성하기

Django에서 App은 manage.py를 통해 생성합니다.

python manage.py startapp foods

App을 생성하면 프로젝트 디렉토리 안에 새로운 폴더가 만들어집니다.

 

3. App 등록 (INSTALLED_APPS)

생성한 App은 반드시 settings.py에 등록해야 Django가 인식합니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'foods',
]

리스트 마지막 항목에도 콤마(,) 를 붙이면
추가/삭제 시 발생할 수 있는 문법 오류를 예방할 수 있습니다.

 

4. Django App 기본 구조

App을 생성하면 아래와 같은 파일 구조가 만들어집니다.

foods/
├─ __init__.py
├─ admin.py
├─ apps.py
├─ migrations/
│  └─ __init__.py
├─ models.py
├─ tests.py
└─ views.py

각 파일의 역할은 다음과 같습니다.

1️⃣ admin.py
  • Django 관리자 페이지(admin)와 App을 연결
  • 모델을 관리자 화면에서 관리할 때 사용

2️⃣ apps.py

  • App의 설정 정보를 담는 파일
  • 고급 설정에 사용되며, 입문 단계에서는 깊게 다루지 않아도 됨

공식 문서:
https://docs.djangoproject.com/en/2.2/ref/applications/

 

Applications | Django documentation

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

3️⃣ migrations/

  • 모델 변경 사항을 저장하는 디렉토리
  • 데이터베이스 구조 변경 이력 관리
  • makemigrations, migrate와 함께 사용

4️⃣ models.py

  • App에서 사용하는 데이터 구조(Model) 정의
  • 데이터베이스와 직접적으로 연결되는 핵심 파일

5️⃣ tests.py

  • App 단위 테스트 코드 작성
  • 기능이 의도대로 동작하는지 검증
  • 작은 단위 테스트를 미리 작성하는 것이 권장됨

 6️⃣ views.py

  • App의 핵심 로직
  • 사용자의 요청(request)을 처리하고 응답(response)을 반환

 

5. 정리하면

  • Django는 Project → App 단위 구조
  • App은 기능별로 나누어 관리
  • settings.py에 App 등록 필수
  • 각 파일은 명확한 역할을 가짐