파이썬 진영 대표 웹 애플리케이션 프레임워크 Django
보편적으로 Layer단위로 나누고 그 안에서 도메인 별로 로직을 분리하는 스프링 과 다르게
장고는 도메인 단위로 분리한 뒤에 그 안에서 Layer를 나눈다.
Django는여러개의 App을 가진다 (현 이미지에서는 member orders payments product webPage가 장고의 애플리케이션이다.)
이러한앱들을 ROOT Application(현이미지에서는 configuration)의 settings.py 파일에서 @Configuration객체 에서 작업해는 것처럼 설정 작업을 해준다.
그리고 모든 HTTP 요청들은 ROOT Application의 url 을 통해서 각자의 App으로 로직을 타고 들어가는 방식이다.
장고의 구조 이해의 가장 중요한 부분은 settings.py의 구성을 이해하는 것이다.
Settings.py의 구조
1. INSTALLED_APPS
# Application definition
INSTALLED_APPS = [#최초 장고 프로젝트 생성시 등록되있는 Application
'django.contrib.admin', # 장고의 꽃 관리자 App이다
'django.contrib.auth', # 장고 기본제공 회원 관리앱 장고프로젝트를 생성하는 동시에 회원관리하는 App 개발이 끝나있다.
'django.contrib.contenttypes', # http contenttype이 아니라 장고 App별 컨텐츠들 관리
'django.contrib.sessions', # 우리가 아는 그 세션,쿠키. 장고 회원관리 앱과 더불어 인증 로직을 지원한다.
'django.contrib.messages',
'django.contrib.staticfiles', # 장고의 정적 파일들 관리 해주는 app
'django_extensions', # 장고의 유틸리티 기능 확장 이건 다양해서 구글링 해서 찾아보시는게
'rest_framework', # 순수 장고는 html을 반환해주는 전통적인 웹 프로젝트를 목적으로 만들어 졌습니다.# 그래서 API 형식에 대해서는 커스터마이징 해줘야하는 부분이 많아요
# 그래서 장고가 REST API를 지원해주는 APP DRF를 만들어 두었습니다 그게 이거입니다
'drf_yasg', # 장고 API 문서 자동화 도구 이건 다른 포스트에서 따로 설명드리겠습니다...
# 위 이미지에 만들어져있는 APP들을 등록한것 이렇게 등록안하면
# 스프링에서 @Bean 안붙이면 그냥 자바 객체이듯이 그냥 장고에서도 파이썬 패키지에 불과함
'member.apps.MemberAppConfig',
'product.apps.ProductAppConfig',
'orders.apps.OrdersAppConfig',
'payments.apps.PaymentsConfig',
'webpage.apps.WebpageConfig',
]
2. MIDDLEWARE
3. DATABASES