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.使用

視圖
在這裏插入圖片描述
路由

在這裏插入圖片描述
結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章