첫째 : 경로 구조
없는 경우 구조에 따라 앱 내에 미들웨어 폴더 를 만들어야합니다 .
yourproject/yourapp/middleware
폴더 미들웨어는 settings.py, urls, templates ...와 같은 폴더에 있어야합니다.
중요 : 앱이이 폴더를 인식 할 수 있도록 미들웨어 폴더 안에 __init__.py 빈 파일을 만드는 것을 잊지 마십시오.
둘째 : 미들웨어 생성
이제 사용자 지정 미들웨어 용 파일을 만들어야합니다.이 예에서는 IP를 기반으로 사용자를 필터링하는 미들웨어를 원한다고 가정 하고 다음 코드를 사용 하여 미들웨어 폴더 내에 filter_ip_middleware.py 라는 파일을 만듭니다 .
class FilterIPMiddleware(object):
def process_request(self, request):
allowed_ips = ['192.168.1.1', '123.123.123.123', etc...]
ip = request.META.get('REMOTE_ADDR')
if ip not in allowed_ips:
raise Http403
return None
셋째 : 'settings.py'에 미들웨어를 추가합니다.
우리는 다음을 찾아야합니다.
MIDDLEWARE_CLASSES
(장고 <1.10)
MIDDLEWARE
(장고> = 1.10)
settings.py 안에 미들웨어를 추가해야합니다 ( 마지막 위치에 추가 ). 다음과 같아야합니다.
MIDDLEWARE = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'yourapp.middleware.filter_ip_middleware.FilterIPMiddleware'
)
완료! 이제 모든 클라이언트의 모든 요청이 사용자 지정 미들웨어를 호출하고 사용자 지정 코드를 처리합니다!