Django框架(十七)--middleware,自定义管理器

一、中间件–middleware

在这里插入图片描述
django中间件是一个轻量级的插件系统,存在于视图处理前后的请求和响应中。开发人员,可以利用中间件,干预视图的请求和响应。

中间件是一个面向对象的类,能够干预视图的处理,有五种方法。

  • process_request:在请求后,在process_view之前

  • process_view:在process_request之后,在执行views之前

    执行views

  • process_exception:视图处理之后,返回响应之前

  • process_template_response:渲染模板之前

  • process_response:返回response之前

中间件的作用范围:

全部视图

中间件的执行顺序:
在这里插入图片描述

(一)使用中间件

干预视图

1.项目主目录中创建middleware.py

在这里插入图片描述

2.配置中间件

在这里插入图片描述

3.编写中间件

在这里插入图片描述

process_request–拦截ip

在这里插入图片描述

process_view

在这里插入图片描述

process_exception

在这里插入图片描述
将异常写入日志文件,并发送给boss

def process_exception(self,request,exception):
    '''
    :param request: 请求对象
    :param exception: 异常信息
    '''
    print('我是process_exception')
    
    # 将异常写入文件error.log
    import os
    import time
    from Qshop.settings import BASE_DIR
    file = os.path.join(BASE_DIR,'error.log')
    with open(file,'a') as f:
    	now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
    	content = '[%s]:%s'%(now,exception)
    	f.write(content + '\n')
    # 给boss发送短信/邮件 异步
    from CeleryTask.tasks import send_email
    params = {
    	'content':'报错了'
    }
    send_email.delay(params)
    return HttpResponse('代码报错了 <br> %s'% exception)
process_template_response

很少见
在这里插入图片描述
视图
在这里插入图片描述
在这里插入图片描述

视图必须返回一个render对象才能够被触发

process_response

在这里插入图片描述
在这里插入图片描述

二、Django模型自定义管理器

manager 在django模型中是操作的一个元类,提供了很多常用方法:get,filter,first,双下划线,save,update

重写manager,增加自己的方法,将重写好的类赋值给objects,或者重新定义一个objects对象。

常用来:

  • 少字段多频率的插入和修改
  • 多频率字段,表限制查询

使用步骤

1.模型中导包,创建类(继承),增加方法

在这里插入图片描述

2.赋值到objects

在这里插入图片描述

3.使用

视图
在这里插入图片描述
路由

在这里插入图片描述
结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值