栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在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”中
我们需要寻找:

  • MIDDLEWARE_CLASSES
    (django <1.10)
  • MIDDLEWARE
    (Django> = 1.10)

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号