
구조
설치: brew install tree
현재 디렉토리 구조: tree -L 4
├── accounts
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── constants.py
│ ├── forms.py
│ ├── migrations/
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── analysis
│ ├── __init__.py
│ ├── admin.py
│ ├── analyzers.py
│ ├── apps.py
│ ├── migrations/
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ ├── utils.py
│ ├── views_html.py
│ └── views.py
├── core
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── docker
│ ├── docker-compose.yml
│ ├── Dockerfile
│ └── entrypoint.sh
├── manage.py
├── poetry.lock
├── pyproject.toml
├── README.md
├── templates
│ ├── accounts
│ │ ├── account_form.html
│ │ └── account_list.html
│ ├── analysis
│ │ ├── analysis_create.html
│ │ └── analysis_list.html
│ ├── base.html
│ ├── form-js.html
│ ├── main.html
│ ├── registration
│ │ ├── login.html
│ │ └── signup.html
│ ├── transactions
│ │ ├── transaction_detail.html
│ │ ├── transaction_form.html
│ │ └── transaction_list.html
│ └── users
│ └── profile.html
├── transactions
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── filters.py
│ ├── forms.py
│ ├── migrations/
│ ├── models.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ ├── views_html.py
│ └── views.py
└── users
├── __init__.py
├── admin.py
├── apps.py
├── forms.py
├── migrations
│ ├── __init__.py
│ └── 0001_initial.py
├── models.py
├── tests.py
├── urls.py
└── views.py
앱 구성 역할 요약
① accounts 앱
- 가계부 “계좌(Account)” 관리
- 모델: Account
- 기능: 계좌 생성, 삭제, 목록
- HTML 기반 UI: account_form.html, account_list.html
② transactions 앱
- 핵심 데이터: 거래(Transaction)
- CRUD + 필터링 + 상세보기
- 필터 기능(filters.py), 목록/생성/수정/상세 페이지 HTML 제공
- REST API + HTML view 모두 존재
③ analysis 앱
- 통계 분석 / 그래프 생성
- analyzers.py 내부에서 Pandas + Matplotlib로 데이터를 처리
- REST API + HTML view 다 있음
- utils.py 로직 보조
④ users 앱
- 회원정보(UserProfile)
- Django 기본 auth 확장 보조
- signup/login 템플릿은 registration 아래 위치
⑤ core (프로젝트)
- settings.py
- 전체 URL 연결
- 메인 페이지(main.html)
⑥ templates / static
- 모든 앱 공통 템플릿 관리 위치
- base.html 최상위 레이아웃
⑦ docker 폴더
- Dockerfile, docker-compose.yml, entrypoint.sh → 나중에 서버 배포할 때 사용
앱별 파일 구성 의미
(1) views.py와 views_html.py를 분리한 구조
- views.py → API 전용 (DRF 기반)
- views_html.py → HTML 템플릿 렌더링
- API와 HTML 로직을 완전히 분리 → 코드가 훨씬 깔끔해짐
- 분리하지 않으면, 유지보수가 힘듬 / 가독성 하락
(2) serializers.py 있는 앱은 API 제공
- transactions
- analysis
- 두 앱은 REST API 기능도 제공한다는 뜻
(3) filters.py (transactions 전용)
- HTML 필터 + API 필터 둘 다 지원 가능
(4) analyzers.py
- DataFrame 생성
- 그룹화 / 통계 / 그래프
- 결과 이미지 파일 저장
내 코드
transactions
├── transactions
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── filters.py → DRF에서 사용할 필터 정의
│ ├── forms.py → HTML에서 입력받을 Form 구성
│ ├── migrations/
│ ├── models.py → 거래(Transaction) 데이터 정의
│ ├── serializers.py → API 응답/입력 검증
│ ├── tests.py
│ ├── urls.py → 위의 모든 것을 URL로 연결
│ ├── views_html.py → HTML 페이지용 CRUD
│ └── views.py → REST API (List/Create, Detail/Update/Delete)