一、中間件–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.使用
視圖
路由
結果