您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

第八单元---中间件

1.中间件作用

Django中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,是全局修改

2.Django默认中间件

在setting文件中:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    # 为request/response提供了几种xss脚本过滤的安全改进,无它不安全
    'django.contrib.sessions.middleware.SessionMiddleware',
    # 开启session会话支持,无它无session
    'django.middleware.common.CommonMiddleware',
    # 基于APPEND_SLASH和PREPEND_WWW的设置来重写URL,
    # 如果APPEND_SLASH设为True,并且初始URL 没有以斜线结尾以及在URLconf 中没找到对应定义,这时形成一个斜线结尾的新URL;
    # 如果PREPEND_WWW设为True,前面缺少 www.的url将会被重定向到相同但是以一个www.开头的ur
    
    'django.middleware.csrf.CsrfViewMiddleware',
    # 添加跨站点请求伪造的保护,通过向POST表单添加一个隐藏的表单字段,并检查请求中是否有正确的值,无它无csrf保护
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 在视图函数执行前向每个接收到的user对象添加HttpRequest属性,表示当前登录的用户,无它用不了request.user
    'django.contrib.messages.middleware.MessageMiddleware',
    # 开启基于Cookie和会话的消息支持,无它无message
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # 对点击劫持的保护
]
 

3.中间件执行顺序

在这里插入图片描述

 

3.1常用的种类

1.process_request(self,request) # django处理请求之前
2.process_response(self,request,response)#django返回响应之后

3.2实例

先在子应用文件夹中创建middleware.py文件

from django.utils.deprecation import MiddlewareMixin

class MyMiddleware(MiddlewareMixin):
    # 处理请求之前,调用这个中间件
    def process_request(self,request):
        # 举例:黑名单处理
        print(f'process_request====={request}')

    # 视图返回响应之后,调用这个中间件
    def process_response(self,request,response):
        print(f'process_response==={request}')
        return response # 必须返回相应
 

再在setting.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',

    'students.middleware.MyMiddleware', # 调用自定义中间件
]
 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进