Django 프로젝트 구조
목표 프로젝트 폴더를 열었을 때 무엇이 들어 있는지 기능·설정·개발로 구분해 이해한다.
앞 '터미널' 강의에서 프로젝트도 결국 폴더 하나라고 했습니다. 그 폴더를 실제로 열면 무엇이 들어 있는지 이번 강의에서 한 바퀴 돌아봅니다.
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 에 올리지 않습니다. - 다음 시간: 이 폴더들을 하나로 묶어 주는 '설정'을 이어서 살펴봅니다.