📚 FDE · 세션 · Django 이해 · L01

Django 프로젝트 구조

작성일자 2026-07-30  ·  수정일자 2026-08-10  ·  강의차수 L01  ·  예상소요 20분

목표 프로젝트 폴더를 열었을 때 무엇이 들어 있는지 기능·설정·개발로 구분해 이해한다.

앞 '터미널' 강의에서 프로젝트도 결국 폴더 하나라고 했습니다. 그 폴더를 실제로 열면 무엇이 들어 있는지 이번 강의에서 한 바퀴 돌아봅니다.

1. 프로젝트 = 폴더 하나

우리 프로젝트는 폴더 하나이고, 실제 코드는 그 안의 src 폴더에 들어 있습니다. src 를 열어 보면 폴더가 스무 개쯤 돼서 처음엔 막막합니다.

my_project/              ← 프로젝트 (폴더 하나)
└── src/                 ← 실제 코드가 들어 있는 곳
    ├── .claude/         ← Claude 개발용 도구
    ├── accounts/        ← 기능(앱) · 로그인
    ├── meetings/        ← 기능(앱) · 회의
    ├── my_project/      ← 전체 설정 (이름이 프로젝트와 같음)
    ├── utils/           ← 공통 코드
    ├── credentials/     ← 비밀 (git 밖)
    ├── static/          ← 화면 자원 (CSS·이미지)
    ├── templates/       ← 화면 자원 (HTML)
    ├── docs/            ← 문서
    ├── e2e_tests/       ← 테스트
    ├── .env             ← 비밀 (git 밖)
    └── CLAUDE.md        ← 규칙 문서

폴더가 많아 보여도, 성격으로 묶으면 세 부류뿐입니다.

부류 무엇 예
① 기능(앱) 실제 화면·동작이 나오는 곳 accounts, meetings …
② 기타·설정·자원 앱이 돌아가게 하는 설정·공통 코드·비밀·화면 자원 전체 설정, utils, .env, static
③ 개발·문서·테스트 코드를 만들고 검증하는 쪽(실행엔 직접 안 들어감) .claude, docs, e2e_tests

2. 기능(앱)

우리가 쓰는 Django 는 기능을 앱(app) 이라는 단위로 나눕니다. 로그인은 accounts 앱, 회의는 meetings 앱, 이렇게 기능 하나가 폴더 하나(앱) 입니다. 화면과 동작은 대부분 이 앱들에서 나옵니다.

새 기능을 추가한다는 건 보통 새 앱을 하나 만든다는 뜻입니다. 반대로 뒤에 나올 utils·credentials 같은 폴더는 앱이 아니라 앱을 거드는 쪽입니다. (어떤 폴더가 앱인지는 설정에 등록돼 있는지로 정해지지만, 지금은 '기능 = 앱 폴더'만 기억하면 됩니다.)


3. 기타·설정·자원

기능(앱)이 돌아가려면 뒤에서 받쳐 주는 것들이 필요합니다.

  • 전체 설정 폴더: 프로젝트 이름과 같은 폴더(예: my_project/)로, 앱이 아니라 프로젝트 전체 설정을 담당합니다. 어떤 주소를 어느 앱으로 넘길지, dev·prod 설정을 어떻게 나눌지가 여기서 정해집니다.
  • utils (공통 코드): 여러 앱이 똑같이 쓰는 기능을 한곳에 모아 둔 공통 코드입니다. 같은 코드를 앱마다 복사하지 않고 재사용합니다.
  • credentials·.env (비밀): 비밀키나 외부 서비스 인증 파일처럼 밖에 새면 안 되는 값입니다. 앞 '비밀키와 환경변수' 강의에서 봤듯 이들은 .gitignore 로 막아 git 에 올리지 않습니다.
  • static·templates (화면 자원): 화면에 쓰이는 CSS·이미지(static)와 HTML 틀(templates)입니다.

4. 개발·문서·테스트

서비스가 도는 데 직접 들어가진 않지만, 코드를 만들고 검증할 때 쓰는 것들입니다.

  • docs: 기획·설계·이슈 등 문서.
  • e2e_tests: 화면이 의도대로 동작하는지 자동으로 확인하는 테스트.
  • .claude·CLAUDE.md: Claude Code 로 개발할 때 쓰는 도구(스킬·에이전트·훅)와 규칙 문서입니다.

이 세 부류 대부분은 standarda-template(프로젝트 기본 구조를 만들어 주는 틀)이 처음부터 깔아 줍니다. 그래서 어느 프로젝트를 열어도 구조가 비슷하고, 우리 기능(앱)만 그 위에 얹으면 됩니다.


마무리

  • 핵심 정리: 프로젝트는 폴더 하나이고, 그 안은 세 부류입니다. 뼈대는 대부분 standarda-template 이 깔아 줍니다.
    • ① 기능(앱): accounts·meetings… — 화면·동작이 나오는 곳.
    • ② 기타·설정·자원: 전체 설정·utils·.env/credentials·static.
    • ③ 개발·문서·테스트: .claude·docs·테스트.
  • 주의 사항: 폴더가 있다고 다 '기능(앱)'은 아닙니다. utils·credentials 는 앱이 아니라 앱을 받쳐 주는 쪽입니다. 그리고 credentials·.env 는 비밀이라 git 에 올리지 않습니다.
  • 다음 시간: 이 폴더들을 하나로 묶어 주는 '설정'을 이어서 살펴봅니다.
이 강의를 학습하셨나요?