- Python CGI (Common Gateway Interface)
: CGI 적용 안 했을 때 -> 코드 그대로 전송
CGI 적용했을 때 -> cgi-bin 폴더 안의 python 파일들을 실행시켜 결과 출력
- WSGI (Web Server Gateway Interface)
: 웹서버 전체가 CGI가 되고, 코드에 의해서 제어됨
- MVT 구조
: model + view + template
(1) model: 데이터베이스와 연결
(2) vew: 사용자의 요청을 처리하고 응답
(3) template: css역할
Model
MVC 패턴의 Model과 대응하는 개념이다. 장고는 기본적으로 ORM을 지원하기 때문에 SQL을 쓰지 않아도 파이썬 코드로 데이터를 다룰 수 있다. 하나의 테이블을 Model 내부의 Class로 정의하고, 이 Class는 DB table 역할을 한다.
View
MVC 패턴의 Controller와 대응하는 개념이다. MVC의 View와 이름은 같으나 Template가 MVC의 View와 대응되고, MTV의 View는 Controller와 대응한다는 것을 잊지 말자.
Template
MVC 패턴의 View와 대응하는 개념이다. 사용자가 HTML을 통해 시각적으로 확인 할 수 있는 화면을 보여준다. 사실상 MVC의 View와 같은 역할을 한다고 볼 수 있다.
- Routing
: 경로와 함수를 연결
urlpatterns : url과 view의 연결 목록을 작성
path : url문자열과 view를 연결해주는 함수
regex를 이용하여 url 문자열과 view를 연결해주는 함수
- View
: 클라이언트의 요청을 처리하고 응답을 반환
1. request: client로부터 전달되는 값이 들어있음
2. repsonse: 응답에 필요한 내용을 알아서 만들어줌
(1) HttpResponse: 문자열 형식의 응답을 반환합니다.
(2) JsonResponse: JSON 형식의 응답을 반환합니다.
(3) HttpResponseRedirect: 다른 URL로 Redirect 합니다.
(4) HttpResponseNotFound: 404 Not Found 에러를 응답합니다
- static
1. WSGI 앞 단의 web server (NginX, Apache) 에게 맡김
- 장점: 효율적
- 단점: 세팅이 어려움
2. web server를 따로 분리해서 운영
- 장점: 세팅이 간단함(효율적)
- 단점: 도메인이 분리됨
3. 방금 배운대로 django에서 static 연결하여 처리
- 장점: 세팅이 간단
- 단점: 비효율
- template
: Logic과 html을 분리하기 위함 => 유지보수를 편하게 하기 위함
render함수를 사용하고 dictionary 형태로 데이터 전달
{{ variable | filter: argument }}
length: 리스트, 문자열, 딕셔너리의 길이
truncatechars: 문자열을 지정한 길이로 줄여서 출력, 생략된 부분은 "..."로 표시
date: 날짜 객체를 지정한 포맷으로 출력
escape: 문자열에서 HTML 태그를 이스케이프 처리하여 안전하게 출력
safe: 문자열에서 HTML 태그를 이스케이프 처리하지 않고 출력
- APP
: 프로젝트의 특정 기능 또는 작업을 담당하는 독립적인 모듈
프로젝트에서 재사용 가능하고 독립적으로 테스트할 수 있는 기능 단위로 구성
ex) 블로그를 만든다 했을 때 => 블로그 게시물을 관리하는 앱, 사용자 인증을 처리하는 앱, 댓글을 관리하는 앱 등 여러 앱을 개발
- 정리
- MTV 구조, Model, Template, View 구조로 되어있다.
- Routing은 URL과 View를 연결한다.
- View는 Template과 Model을 조합하여 Request에 대한 Response를 완성한다.
- Template은 데이터를 담을 기본 틀을 구성한다.
- 코드의 재사용을 위해 App으로 분리해서 작성한다.