第一:路径结构 如果没有,则需要按照以下结构在应用程序中创建中间件文件夹:
yourproject/yourapp/middleware
文件夹中间件应与settings.py,URL,模板…放置在同一文件夹中。
重要提示:不要忘记在中间件文件夹中创建__init__.py空文件,以便你的应用识别此文件夹
第二:创建中间件 现在,我们应该为自定义中间件创建一个文件,在此示例中,我们假设需要一个基于用户IP过滤用户的中间件,我们在中间件文件夹中使用以下代码创建一个名为filter_ip_middleware.py的文件:
class FilterIPMiddleware(object):
# Check if client IP is allowed
def process_request(self, request):
allowed_ips = ['192.168.1.1', '123.123.123.123', etc...] # Authorized ip's
ip = request.Meta.get('REMOTE_ADDR') # Get client IP
if ip not in allowed_ips:
raise Http403 # If user is not allowed raise Error
# If IP is allowed we don't do anything
return None
第三:将中间件添加到我们的“ settings.py”中 我们需要寻找:
在settings.py内部,我们需要添加中间件(将其添加到最后一个位置)。应该是这样的:
MIDDLEWARE = ( # Before Django 1.10 the setting name was 'MIDDLEWARE_CLASSES'
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Above are django standard middlewares
# Now we add here our custom middleware
'yourapp.middleware.filter_ip_middleware.FilterIPMiddleware'
)