- 요청이 들어오면 WSGI 처리기가 인스턴스화 된다.
- 지정한 settings.py 파일과 Django exception 클래스들을 불러온다
- settings.py 에서 MIDDLEWARE_CLASSES 또는 MIDDLEWARES 튜플을 통해 미들웨어 클래스를 불러온다.
- 뷰, 응답, 요청, 예외를 처리할 Middleware method list가 작성된다.
- Request method 들을 돌면서 처리함 :: process_request
- 처리가 되면 view 에 전달될 request 객체가 준비됨.
- URL conf 를 통한 URL 처리
- URL 라우팅을 통해 호출할 view 를 결정
- 뷰 처리 및 함수호출 :: process_view
- view 는 세가지 항목이 포함되어야 한다
- 호출가능해야 함 :: 함수/클래스 기반의 View
(클래스기반이라면 View 클래스 상속& as_view()가 Http Method 기반)
- process_request/process_view 에 의한 결과로 HttpRequest 객체를 첫번째 인자로 받아야 함
- HttpResponse 객체를 반환하거나 예외를 발생시켜야 함 여기서의 응답이 process_view 에서 사용
- 처리할 View 가 결정되면 process_view 단계의 미들웨어가 개입
- 예외 메서드 처리 :: process_exception
- 응답 메서드 처리 :: process_response (요청 미들웨어 처리의 역순으로)
- 캐싱 등
- 1.10 이하 버전에서는 MIDDLEWARE_CLASSES의 모든 미들웨어들이 process_response를 가지고 있고 호출함. (진행상황에 따라 process_response로 바로 이동한 경우에도!)
- 이후 버전(MIDDLEWARES) 에서는 실행된 미들웨어와 이전에 실행된 미들웨어만이 process_response를 호출함
- 응답 값을 만들에 웹서버 콜백으로 전달