您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Django中设置自定义中间件

如何在Django中设置自定义中间件

第一:路径结构 如果没有,则需要按照以下结构在应用程序中创建中间件文件夹:

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'
)

做完了!现在,每个客户端的每个请求都将调用你的自定义中间件并处理你的自定义代码

Go 2022/1/1 18:19:30 有474人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶