장고 기본 구조 및 이해
장고는 MTV 프레임워크
이름만 다를 뿐, MVC이다.
- Model → 장고의 Model
- View → 장고의 Template
- Controller → 장고의 View
- HTTP 클라이언트로부터의 요청을 처리하는 함수
기본 생성된 파일/디렉토리 목록
프로젝트명 : 프로젝트명으로 생성된 디렉토리
manage.py : 명령행을 통해 각종 장고 명령을 수행
프로젝트명 : 프로젝트명으로 생성된 디렉토리. 이 이름을 참조하고 있는 코드가 몇 개 있기에 함부로 수정 X
init.py : 모든 파이썬 패키지에는 init.py을 둔다. 패키지를 임포트 할 때의 임포트 대상
settings.py : 현재 프로젝트에서 장고 기본 설정 (django/conf/global_settings.py) 을 덮어쓰고, 새롭게 지정할 설정들
urls.py : 최상위 URL 설정
wsgi.py : 실서비스에서의 웹 서비스 진입점
asgi.py : 비동기 지원
장고 주요 기능들 (1)
- Function Based Views : 함수로 HTTP 요청 처리
- Models : 데이터베이스와의 인터페이스
- Templates : 복잡한 문자열 조합을 보다 용이하게 해준다. 주로 HTML 문자열 조합 목적으로 사용하지만, 푸쉬 메세지나 이메일 내용을 만들 때에도 쓰면 편리하다.
- Admin 기초 : 심플한 데이터베이스 레코드 관리 UI
- Logging : 다양한 경로로 메세지 로깅
- Static files : 개발 목적으로의 정적인 파일 관리
- Messages framework : 유저에게 1회성 메세지 노출 목적
장고 주요 기능들 (2)
- Class Based Views : 클래스로 함수 기반 뷰 만들기
- Forms : 입력폼 생성, 입력값 유효성 검사 및 DB로의 저장
- Validators & Fields & Widgets
- DRF에서는 Serializer가 Froms와 비슷한 기능을 함.
- 테스팅
- 국제화 & 지역화
- 캐싱
- Geographic : DB의 Geo 기능 활용 (PostgreSQL 중심)
- Sending Emails
- Syndication Feeds (RSS/Atom)
- Sitemaps
웹 애플리케이션 기본 구조

클라이언트 사이드와 서버 사이드로 구별이 됨.
웹브라우저가 클라이언트 사이드
- 웹 브라우저가 항상 먼저 요청을 함.
- Django가 그에 맞는 로직 실행
- 데이터베이스로부터 데이터를 가져옴.
- 데이터를 넣음.
- 데이터를 수정함.
- 데이터를 삭제함.
- 적절하게 캐시 서버에 세팅, 업데이트 혹은 삭제를 하고 값을 가져옴.
- Django가 응답을 받음.
- 웹 브라우저에게 응답을 돌려줌.
장고 기본 구조

- 웹브라우저의 요청
- URLConf에서 URL 별로 호출할 함수를 리스트에 등록
- 요청한 URL에 맞춰서 함수가 호출됨.
- 함수를 수행할 때 데이터베이스와 interaction이 있으면 SQL을 수행해야함.
- 장고 모델을 사용하면 보다 수월하게 interaction 할 수 있다.
- 웹 브라우저에게 HTML 문자열 응답을 주려고 한다면 템플릿 엔진을 활용하면 훨씬 수월하게 조합을 할 수 있다.
장고 앱
재사용성을 목적으로한 파이썬 패키지
재사용성을 목적으로 둔 것이 아니라면, 하나의 장고 앱에서 현재 프로젝트의 거의 모든 기능을 구현해도 무방하다. 앱을 하나의 작은 서비스로 봐도 무방하다.
하나의 앱 이름은 현재 프로젝트 상에서 유일해야 한다.
새롭게 생성한 장고앱이나 외부 라이브러리 형태의 장고앱은 필히 settings.INSTALLED_APPS에 등록을 시켜줘야만 장고 앱으로서 대접을 받는다.
애플리케이션의 다양한 데이터 저장 방법
데이터베이스 : RDBMS, NoSQL 등
파일 : 로컬, 외부 정적 스토리지
캐시서버 : memcached, redis 등