国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Django中Middleware中的函數(shù)

tuniutech / 626人閱讀

摘要:一般情優(yōu)下我們以在這里做一些校驗(yàn)比如戶登錄或者中是否有認(rèn)證頭之類的驗(yàn)證這個(gè)方法可以有兩種返回值或者,如果返回,那么接下米的處理方法只會(huì)執(zhí)行,其他方法將不會(huì)被執(zhí)行。它的返回值跟一樣,是或者,其邏輯也一樣。

一個(gè)middleware的例子

import time

from django.urls import reverse
from django.utils.deprecation import MiddlewareMixin


class TimeItMiddleware(MiddlewareMixin):
    def process_request(self, request):
        return

    def process_view(self, request, func, *args, **kwargs):
        if request.path != reverse("index"):
            return None

        start = time.time()
        response = func(request)
        costed = time.time() - start
        print("process view: {:.2f}s".format(costed))
        return response

    def process_excepttion(self, request, exception):
        pass

    def process_template_response(self, request, response):
        return response

    def process_response(self, request, response):
        return response

middleware中的函數(shù)有:

process_request

process_view

process_tmplate_response

process_response

process_exception

下面分別進(jìn)行介紹:

process_request:

這是請(qǐng)求來(lái)到 middleware 中時(shí)講入的第一個(gè)方法。一般情優(yōu)下,我們以在這里做一些校驗(yàn),比如
戶登錄或者 HTTP 中是否有認(rèn)證頭之類的驗(yàn)證.這個(gè)方法可以有兩種返回值 HttpResnonse 或者None,如果返回 HttpResponse,那么接下米的處理方法只會(huì)執(zhí)行 process_response,其他方法將不會(huì)被執(zhí)行。這里需要注意的是,如果你的 middleware 是 settings 配置的 MIDDLEWARE 的第一個(gè),那么剩下的 middleware 也不會(huì)被執(zhí)行;如果返回 None,那么 Diango會(huì)繼續(xù)執(zhí)行其他方法。

process_view:

這個(gè)方法是在 process_request 方法之后執(zhí)行的,參數(shù)如上面代碼所示,其中 func 就是我們將要執(zhí)行的 view 方法。因此,如果要統(tǒng)計(jì)一個(gè)view的執(zhí)行時(shí)間,可以在這里做。它的返回值跟 process_request 一樣,是HttpResponse 或者 None,其邏輯也一樣。如果返回 None,那么 Django 會(huì)幫你執(zhí)行 view 函數(shù),從而得到最終的 response。

Process_template_response:

執(zhí)行完上面的方法,并且 Django 幫我們執(zhí)行完 view,拿到最終的 response 后,如果使用了模板的 response (這是指通過(guò) return render(request,"index.html",context={})方式返回的 response),就會(huì)來(lái)到這個(gè)方法中。 在這個(gè)方法中,我們可以對(duì) response 做一下操作,比如 Content-Type 設(shè)置,或者其他 header 的修改/增加。

process_response:

當(dāng)所有流程都處理完畢后,就來(lái)到了這個(gè)方法。這個(gè)方法的邏輯跟 process_template_response是完全一樣的,只是后者是針對(duì)帶有模板的response的處理。

process_exception:

上面的處理方法是按順序介紹的,而這個(gè)方法不太一樣。只有在發(fā)生異常時(shí),才會(huì)進(jìn)入這個(gè)方法。哪個(gè)階段發(fā)生的異常呢?
可以簡(jiǎn)單理解為在將要調(diào)用的 View 中出現(xiàn)異常(就是在process_view 的 func 函數(shù)中)或者返回的模板 response 在渲染時(shí)發(fā)生的異常。但是需要注意的是,如果你在process_view 中手動(dòng)調(diào)用了 func,就像我們上面做的那樣,就不會(huì)觸發(fā) process_exception 了。這個(gè)方法接收到異常之
后,可以選擇處理異常,然后返回一個(gè)含有異常信息的 HttpResponse,或者直接返回 None 不處理,這種情況下 Django會(huì)使用自己的異常模板。

以上節(jié)選自《Django企業(yè)開發(fā)實(shí)戰(zhàn)》 胡陽(yáng)著。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/45163.html

相關(guān)文章

  • Django運(yùn)行方式及處理流程總結(jié)(xianglong.me)

    摘要:所以,我按照自己的邏輯總結(jié)了一下項(xiàng)目的運(yùn)行方式和對(duì)的基本處理流程。二請(qǐng)求處理流程和其他框架一樣,的處理流程基本類似接受,返回內(nèi)容。在中,中間件組件用字符串表示指向中間件類名的完整路徑。 之前在網(wǎng)上看過(guò)一些介紹Django處理請(qǐng)求的流程和Django源碼結(jié)構(gòu)的文章,覺得了解一下這些內(nèi)容對(duì)開發(fā)Django項(xiàng)目還是很有幫助的。所以,我按照自己的邏輯總結(jié)了一下Django項(xiàng)目的運(yùn)行方式和對(duì)Re...

    MudOnTire 評(píng)論0 收藏0
  • Django自定義間件模塊--自動(dòng)搜索stackoveflow答案

    摘要:中間件的分類請(qǐng)求期間返回期間如果需要自定義,在中添加對(duì)應(yīng)路徑的文件即可自定義方法需求場(chǎng)景在平時(shí)開發(fā)調(diào)試中,會(huì)遇到這樣那樣的報(bào)錯(cuò),我們自定義一個(gè)簡(jiǎn)單的中間件,的自定義步驟很簡(jiǎn)單,實(shí)現(xiàn)方法即可根據(jù)的和信息,調(diào)用的接口,當(dāng)報(bào)錯(cuò)時(shí)自動(dòng)搜索相關(guān)的答案 Django中間件MIDDLEWARE的分類: 請(qǐng)求期間: process_request(request) process_view(reque...

    wizChen 評(píng)論0 收藏0
  • 去掉django rest framework強(qiáng)制的csrf檢查

    摘要:近期的項(xiàng)目,前端的是在上跑的,然后向我們后端的開發(fā)服務(wù)器進(jìn)行請(qǐng)求。那怎么去掉這個(gè)功能呢,我們現(xiàn)在就是要進(jìn)行跨域請(qǐng)求。這里里面有就直接進(jìn)入了,沒(méi)有下面的檢查了。所以我們只要自己給添加一個(gè)這樣的屬性就好了。最直接的方法還是去寫一個(gè)啊,哈哈。 近期的項(xiàng)目,前端的js是在localhost上跑的,然后向我們后端的開發(fā)服務(wù)器進(jìn)行請(qǐng)求。但是突然前端說(shuō)所有的post請(qǐng)求都報(bào)csrf校驗(yàn)錯(cuò)誤了,甚是奇...

    amc 評(píng)論0 收藏0
  • 處理Djangocors跨域問(wèn)題

      同源策略:同源策略/SOP(Sameoriginpolicy)是一類承諾,由Netscape公司1995年引進(jìn)電腦瀏覽器,這是電腦瀏覽器最關(guān)鍵也最基本安全配置,如今全部適用JavaScript瀏覽器都是會(huì)使用這種對(duì)策。假如缺乏了同源策略,電腦瀏覽器很容易受XSS、CSFR等進(jìn)攻。  同宗就是指"協(xié)議書+網(wǎng)站域名+服務(wù)器端口"三個(gè)同樣,就算兩種不同的域名跳轉(zhuǎn)相同ip詳細(xì)地址,...

    89542767 評(píng)論0 收藏0
  • (轉(zhuǎn))django 設(shè)置 數(shù)據(jù)庫(kù)緩存

    摘要:官方緩存系統(tǒng)介紹配置方式及內(nèi)部實(shí)現(xiàn)機(jī)制中大體分為三種,即針對(duì)全站的緩存配置針對(duì)視圖的緩存配置針對(duì)數(shù)據(jù)的緩存配置。本站采用數(shù)據(jù)庫(kù)全站緩存。每個(gè)頁(yè)面應(yīng)該被緩存的秒數(shù)重啟就可以體驗(yàn)緩存了。 最近博客增加了許多新功能,訪問(wèn)速度有所下降,在國(guó)內(nèi)某搜索引擎上查找的時(shí)候看到了這篇文字,簡(jiǎn)單明了,所以轉(zhuǎn)發(fā)過(guò)來(lái),雖不是原創(chuàng)但是希望能夠幫助更多的朋友。 Django 官方緩存系統(tǒng)介紹: https://d...

    Flands 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<