MVC(Model View Controller, MVC)
디자인 패턴 중 하나로 구성 요소를 Model, View, Controller로 구분하는 패턴
각각의 구성 요소가 다른 요소들에게 영향을 미치지 않고 각자의 역할에만 충실해야 한다.
Model(모델)
데이터를 가지고 있으며, 데이터를 처리하는 로직 또한 가지고 있다.
View(뷰)
화면에 요청에 대한 결과물을 보여주는 역할을 하며 유저와 어플리케이션 간의 인터페이스라고 할 수 있다.
Controller(컨트롤러)
모델과 뷰를 이어주는 역할을 한다.
요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답하면 그 응답을 뷰에 전달한다.
1. 유저가 컨트롤러에 요청 전송
2. 컨트롤러가 모델에 요청사항대로 데이터를 수정할 것을 지시
3. 모델은 지시받은대로 데이터를 수정하고 컨트롤러에게 완료되었음을 전달
4. 컨트롤러는 수정된 데이터를 토대로 표시할 뷰를 결정하고 화면을 출력할 것을 지시
5. 뷰는 지시받은대로 화면을 출력
MTV (Model Template View)
MTV 패턴은 장고의 디자인 패턴이다.
- Model : 안전하게 데이터를 저장
- View : 데이터를 적절하게 유저에게 보여줌(유저가 원하는 형태로 만들어서)
- Control, Template(Django) : 사용자의 입력과 이벤트에 반응하여 Model과 View를 업데이트
Django
장고(Django)
- 파이썬으로 작성된 오픈소스 웹 애플리케이션 프레임워크
- MTV(Model-Template-View) 에 따른 일정한 룰에 의해 진행
- 웹 프로그래밍에서 공통적으로 필요한 기능들을 미리 만들어 둔 후 단축함수, 제네릭 뷰 등으로 제공된다.
장고에서 프로젝트를 생성하기 위해 startproject 및 startapp 명령을 실행하면, 자동으로 프로젝트 뼈대에 해당하는 디렉터리와 파일들을 만들어준다.
모델은 models.py파일에, 템플릿은 templates 디렉터리 하위의 *.html 파일에, 뷰는 views.py파일에 작성하도록 한다.
어플리케이션 등록
어플리케이션 & 프로젝트
- 일반적으로 어플리케이션 이름은 ‘복수형' 으로 작성
- 프로젝트는 앱의 집합
- 프로젝트에는 여러 앱이 포함될 수 있음
- 앱은 여러 프로젝트에 있을 수 있음
- 앱은 실제 요청을 처리하고 페이지를 보여주는 등의 역할 담당
- 일반적으로 앱은 하나의 역할 및 기능 단위로 작성하는 것을 권장
설치 어플리케이션 등록
- 프로젝트에서 앱을 사용하기 위해선 반드시 INSTALLED_APPS 리스트에 추가해야함
INSTALLED_APPS
- Django installation 에 활성화 된 모든 앱을 지정하는 문자열 목록
- 본인이 작성한 APP
- 3rd party APP
- django native app
순으로 작성한다
views.py
- 첫번째 매개변수는 항상 request
- 반환값은 HttpResponse
from django.shortcuts import render
# import render 가 template 을 이용해 http 를 만듬(reder method)
render(request,template location[, context])
Django 실행순서
1. startproject “project_name”
2. migragte manage.py
3. run server
- urls - 처리할 URL > application - views.py 의 urls 의 처리할 url 의 함수를 호출
- applications/templates/index.html - 어플리케이션 아래 templates/html 폴더 및 파일 새로 생성
새로운 template 작성 시
Django template 상속
- base.html 에 skelton 작성
- base.html 에 block 작성
- block 작성 시 block content_name 작성
- 이후 해당 content_name 을 상속받을 html - block 에서 받아와야함
- base.html 을 상속받을 html 에서 extends & block 선언
- 해당 html - block 내에 코드 작성
Django template 없을 때
원래 장고 내 템플릿 기본 경로는 applications/templates 폴더로,
그러므로 위 경로 외 다른 경로에 위치한 templates 를 기본적으로 찾을 수 없다.
이를 해결하기 위해서 [settings.py](<http://settings.py>) > TEMPLATES - DIRS: list() 내에 BASE_DIR/해당경로 추가
- settings.py - BASE_DIR : 해당 프로젝트 디폴트 경로
'Back-end > Django' 카테고리의 다른 글
RDB 관계 - 1:1, 1:N, M:N / 외래키(Foreign Key) (0) | 2022.10.05 |
---|---|
쿠키(cookie), 세션(session) (0) | 2022.09.15 |
Authentication(인증) - accounts.User (0) | 2022.09.15 |
django - Model, CRUD, admin (0) | 2022.09.02 |
django 프로젝트, 앱 생성 / 가상환경 설정 / 프로젝트 작성 틀 (0) | 2022.09.02 |