一、中间件–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.使用
视图
路由
结果