最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django如何自己創(chuàng)建一個(gè)中間件

 更新時(shí)間:2019年07月24日 10:34:59   作者:苦瓜爆炒牛肉  
這篇文章主要介紹了django如何自己創(chuàng)建一個(gè)中間件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

中間件是什么?

中間件是類似flask函數(shù)中鉤子函數(shù)的東西??梢栽谡埱笠晥D函數(shù)前,或者視圖函數(shù)響應(yīng)后處理某些事情。中間件對全部視圖都有效!

中間件一般會有兩個(gè)方法,process_request和process_response。分別用來處理請求到達(dá)視圖函數(shù)前,到達(dá)視圖函數(shù)后的事情。

編寫一個(gè)自定義的中間件

我們可以根據(jù)業(yè)務(wù)需要自己編寫一個(gè)中間件。在編寫中間件前,你需要讀一下django.utils.deprecation.MiddlewareMixin的源碼。

class MiddlewareMixin(object):
  def __init__(self, get_response=None):
    self.get_response = get_response
    super(MiddlewareMixin, self).__init__()

  def __call__(self, request):
    response = None
    if hasattr(self, 'process_request'):
      response = self.process_request(request)
    if not response:
      response = self.get_response(request)
    if hasattr(self, 'process_response'):
      response = self.process_response(request, response)
    return response

方法名 作用 返回值 備注
__init__(self, get_response=None) 服務(wù)器啟動(重啟)時(shí)執(zhí)行一次 --
process_request(self, request) 在視圖執(zhí)行之前調(diào)用
  • 返回 `None`: 會執(zhí)行視圖
  • 返回 `HttpResponse`: 不會再執(zhí)行視圖
--
process_response(self, request, response) 在視圖執(zhí)行完之后調(diào)用 必須返回HttpResponse對象 --

編寫自定義的中間件:

class My_middleware(MiddlewareMixin):
  def __init__(self,get_response=None):
    super().__init__(get_response)

  def process_request(self,request):
    """
    視圖函數(shù)前執(zhí)行的,一旦這里有return將到達(dá)不了視圖函數(shù)
    request是瀏覽器發(fā)過來的請求
    """
    print("視圖函數(shù)執(zhí)行前")

  def process_response(self,request,response):
    """
    視圖函數(shù)后執(zhí)行的
    request是瀏覽器發(fā)過來的請求
    response是視圖函數(shù)返回的響應(yīng)
    """
    print("視圖函數(shù)執(zhí)行后")

    # 因?yàn)槟隳昧艘晥D函數(shù)的response,就算處理的業(yè)務(wù)與response無關(guān)也要返回response
    return response

中間件的注冊

MIDDLEWARE = [
  ...
  'middlewares.My_middleware'  # 寫上自己的路徑
]

多個(gè)中間件的執(zhí)行順序

?。?!如果你定義了多個(gè)中間件,記得注意一下中間件擺在setting.py文件的位置:

  • 注冊中間件設(shè)置是由上到下執(zhí)行的,所以上面的中間件會先被注冊
  • 對于視圖函數(shù)執(zhí)行前的process_request,先注冊的中間件會先執(zhí)行
  • 對于視圖函數(shù)執(zhí)行后的process_response,后注冊的中間件會先執(zhí)行

例如:

先注冊中間件1,后注冊中間件2。

輸出結(jié)果是:

before 視圖(中間件1)
before 視圖 2(中間件2)
==index==
after 視圖 2(中間件2)
after 視圖(中間件1)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法分析

    python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法分析

    這篇文章主要介紹了python雙端隊(duì)列原理、實(shí)現(xiàn)與使用方法,結(jié)合實(shí)例形式分析了Python雙端隊(duì)列的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-11-11
  • 深入了解python裝飾器

    深入了解python裝飾器

    這篇文章主要介紹了解python裝飾器,裝飾器定義一個(gè)為其他函數(shù)添加功能的函數(shù),裝飾器就是在不修改裝飾對象源代碼以及調(diào)用方式的前提下,為裝飾對象添加新功能,下面和小編一起進(jìn)入文章內(nèi)容了解更多知識,需要的朋友可以參考一下
    2022-03-03
  • OpenCV利用手勢識別實(shí)現(xiàn)虛擬拖放效果

    OpenCV利用手勢識別實(shí)現(xiàn)虛擬拖放效果

    這篇文章主要介紹了利用OpenCV實(shí)現(xiàn)手勢識別,從而進(jìn)行虛擬拖放效果,我們可以使用這個(gè)技術(shù)實(shí)現(xiàn)一些游戲,控制機(jī)械臂等很多有趣的事情。感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • 基于Python安裝pyecharts所遇的問題及解決方法

    基于Python安裝pyecharts所遇的問題及解決方法

    今天小編就為大家分享一篇基于Python安裝pyecharts所遇的問題及解決方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明

    Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)說明

    這篇文章主要介紹了Python字符串編碼轉(zhuǎn)換 encode()和decode()方法詳細(xì)的說明,下面文章圍繞encode()和decode()方法的相相關(guān)資料展開內(nèi)容,具有一定的價(jià)值,需要的朋友卡通參考一下
    2021-12-12
  • python創(chuàng)建進(jìn)程fork用法

    python創(chuàng)建進(jìn)程fork用法

    這篇文章主要介紹了python創(chuàng)建進(jìn)程fork用法,實(shí)例分析了Python使用fork創(chuàng)建進(jìn)程的使用方法,需要的朋友可以參考下
    2015-06-06
  • python中視頻音頻的剪輯與處理實(shí)現(xiàn)

    python中視頻音頻的剪輯與處理實(shí)現(xiàn)

    Python中輕松實(shí)現(xiàn)各種視頻處理操作,包括剪輯、合并、添加音頻、文本、特效等多種功能,主要介紹了python中視頻音頻的剪輯與處理實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • Python獲取女友聊天記錄詳細(xì)流程

    Python獲取女友聊天記錄詳細(xì)流程

    就在前段時(shí)間,在大學(xué)睡我上鋪的兄弟,在兄嘚群里討論,說:他發(fā)現(xiàn)女朋友這幾天只要下班就坐在電腦前,不是工作原因。而且只要他靠近一點(diǎn)就會立即退出頁面,所以他一直很懷疑,在群里問我們這一個(gè)個(gè)單身狗。然后就出現(xiàn)下面這一段對話
    2021-10-10
  • PyTorch實(shí)現(xiàn)AlexNet示例

    PyTorch實(shí)現(xiàn)AlexNet示例

    今天小編就為大家分享一篇PyTorch實(shí)現(xiàn)AlexNet示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python?Panda中索引和選擇?series?的數(shù)據(jù)

    Python?Panda中索引和選擇?series?的數(shù)據(jù)

    這篇文章主要介紹了Python?Panda中索引和選擇series的數(shù)據(jù),文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09

最新評論

友谊县| 博湖县| 拜泉县| 荣昌县| 阿尔山市| 灵武市| 舞钢市| 通城县| 临桂县| 建水县| 云阳县| 新丰县| 清远市| 永州市| 颍上县| 敖汉旗| 汤原县| 宣化县| 普宁市| 如东县| 房山区| 乌鲁木齐市| 古交市| 盐池县| 西峡县| 鸡泽县| 孟州市| 福海县| 苍山县| 高邑县| 中山市| 麦盖提县| 呼图壁县| 黄石市| 轮台县| 温州市| 木里| 邵阳市| 女性| 新泰市| 闻喜县|