#settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
middleware 로직
요청 (Request) 수신:
클라이언트(브라우저 등)로부터 요청이 들어오면, Django 애플리케이션은 이를 수신합니다.
미들웨어 (Middleware) 처리:
요청이 들어오면, Django는 설정에 정의된 미들웨어를 위에서 아래로 순차적으로 통과시킵니다. 각 미들웨어는 요청을 수정하거나, 요청을 중단하고 응답을 반환하거나, 다른 작업을 수행할 수 있습니다.
예를 들어, 인증 미들웨어는 사용자가 인증되어 있는지 확인하고, 그렇지 않은 경우 로그인을 요구할 수 있습니다.
뷰(View) 호출:
모든 미들웨어를 통과한 후, Django는 URL 패턴에 매칭되는 뷰 함수를 호출하여 요청을 처리합니다. 이 단계에서 비즈니스 로직이 수행됩니다.
응답 (Response) 생성:
뷰가 요청을 처리하고 응답 객체를 생성합니다.
응답 (Response) 미들웨어 처리:
응답 객체가 생성된 후, Django는 설정된 미들웨어를 다시 위에서 아래로 통과시킵니다. 이 과정에서 응답이 수정될 수 있습니다. 예를 들어, 캐시 미들웨어는 응답을 캐시할 수 있습니다.
클라이언트로 응답 전송:
모든 미들웨어를 통과한 후, 최종적으로 클라이언트에게 응답이 전송됩니다.
요약
요청이 들어오면: 미들웨어를 거치며 처리가 되고, 이후 URL과 매칭된 뷰로 전달됩니다.
응답이 나갈 때: 뷰에서 생성된 응답이 다시 미들웨어를 거쳐 최종적으로 클라이언트에게 전달됩니다.
이 과정에서 미들웨어는 요청 및 응답에 대한 전처리와 후처리를 수행하는 중요한 역할을 합니다.
미들웨어는 커스텀이 가능하다.
미들웨어의 역할을 한마디로 정의하자면, "요청과 응답 사이에서 처리 과정을 추가하거나 수정하는 중간 단계"라고 할 수 있습니다.
분기처리는 특정 조건에 따라 코드의 흐름을 다르게 처리하는 것을 말합니다. 프로그래밍에서 주로 if, else 같은 조건문을 사용하여 상황에 맞게 다른 로직을 실행하는 방식입니다.