컴퓨터 프로그래밍에서 프레임워크는 구조적으로 고정된 부분을 재사용할 수 있도록 하고,
응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는
포괄적인 추상 구조, 그리고 이를 지원하는 소프트웨어 플랫폼
프레임워크는 명확하게 정의된 API를 가지고 코드를 재사용 가능한 형태로 구조화한다는 점에서
라이브러리와 비슷하지만 프로그램의 흐름이 누구에게 종속되어있는가에 있어서 다르다
밑에서 이어질 설명들은 위 django project를 기반으로 설명한다
위 프로젝트에서 helloworld 패키지에 해당하는 앱으로
django-admin.py startproject helloworld 명령어로 생성된 루트 앱이다
inbound http request를 가장 처음 받아 처리하는 앱으로서
엔드포인트를 통해서 urls.urlpatterns에 기술된 적절한 앱으로 request를 라우팅한다
django core에서 사용할 수 있는 전역 설정 목록과 기본값이 정의된 파일
INSTALLED_APPS
프로젝트에서 사용할 앱들의 경로가 위치하는 영역
user defined app의 경로도 이 항목에 포함된다
TEMPLATES
공통적으로 들어가는 html코드를 관리하기 위한 확장형 template들의 경로를 설정하는 영역
DATABASES
database를 사용하기 위한 설정이 위치하는 영역
default로 sqllite를 사용한다
TIME_ZONE
django의 DateTime객체에서 사용할 기준시를 설정하는 영역
urlpatterns 리스트의 항목(엔드포인트, 대상)에 따라 request를 라우팅 한다
위 항목에서는 엔드포인트가 admin/인 request에 대해서는 장고 기본 admin urls을,
엔드포인트가 없는 request에 대해서는 users라는 앱의 urls를 라우팅한다
위 프로젝트에서 users 패키지에 해당하는 앱으로
python manage.py startapp users 명령어로 생성된 앱이다
root app에서 라우팅된 request를 views의 객체로 라우팅하여 로직을 수행한다
adminpage에서 GUI를 통해 관리할 모델을 선언하는 페이지
python manage.py createsuperuser 명령어를 통해 만든 관리자 ID, 비밀번호로 접근한다
앱에서 사용하기 위한 데이터 베이스 테이블을 ORM문법에 의거하여 작성하는 파일
클래스는 DB에서 테이블과, 각 멤버 객체들은 column에 대응한다
root app에서 라우팅된 request의 엔드포인트에 따라 라우팅될 view가 정의된 파일
request가 최종적으로 라우팅되어 동작시킬 로직이 정의된 파일
위 urls에서 엔드포인트 ''를 MainView.as_view()로 라우팅하기로 했으므로 views.py의
엔드포인트가 ''인 HTTP Req는 MainView 클래스에 정의된 동작을 수행한 결과값을 돌려받을 수 있으며
장고의 클래스형 view의 특성에 따라 각 HTTP method마다 동작을 달리 정의해 준다
우와.. 정말 너무나도 명확한 설명해주셔서 감사합니다! django 관련 자료 찾고 있었는데, 이것을 보니 구조가 한 눈에 들어오네요.. 감사합니다! 남은 하루도 좋은 하루되세요!