欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡介Django中內(nèi)置的一些中間件

 更新時間:2015年07月24日 11:49:06   投稿:goldensun  
這篇文章主要介紹了簡介Django中內(nèi)置的一些中間件,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下

認(rèn)證支持中間件

中間件類: django.contrib.auth.middleware.AuthenticationMiddleware . django.contrib.auth.middleware.AuthenticationMiddleware .

這個中間件激活認(rèn)證支持功能. 它在每個傳入的 HttpRequest 對象中添加代表當(dāng)前登錄用戶的 request.user 屬性。 It adds the request.user attribute, representing the currently logged-in user, to every incoming HttpRequest object.

通用中間件

Middleware class: django.middleware.common.CommonMiddleware .

這個中間件為完美主義者提供了一些便利:

    禁止 ``DISALLOWED_USER_AGENTS`` 列表中所設(shè)置的user agent訪問 :一旦提供,這一列表應(yīng)當(dāng)由已編譯的正則表達(dá)式對象組成,這些對象用于匹配傳入的request請求頭中的user-agent域。 下面這個例子來自某個配置文件片段:

import re

DISALLOWED_USER_AGENTS = (
  re.compile(r'^OmniExplorer_Bot'),
  re.compile(r'^Googlebot')
)

  •     請注意 import re ,因為 DISALLOWED_USER_AGENTS 要求其值為已編譯的正則表達(dá)式(也就是 re.compile() 的返回值)。
  •     依據(jù) ``APPEND_SLASH`` 和 ``PREPEND_WWW`` 的設(shè)置執(zhí)行URL重寫 :如果 APPEND_SLASH 為 True , 那些尾部沒有斜杠的URL將被重定向到添加了斜杠的相應(yīng)URL,除非path的最末組成部分包含點號。 因此, foo.com/bar 會被重定向到 foo.com/bar/ , 但是 foo.com/bar/file.txt 將以不變形式通過。
  •     如果 PREPEND_WWW 為 True , 那些缺少先導(dǎo)www.的URLs將會被重定向到含有先導(dǎo)www.的相應(yīng)URL上。 will be redirected to the same URL with a leading www..
  •     這兩個選項都是為了規(guī)范化URL。 其后的哲學(xué)是每個URL都應(yīng)且只應(yīng)當(dāng)存在于一處。 技術(shù)上來說,URL example.com/bar 與 example.com/bar/ 及 www.example.com/bar/ 都互不相同。
  •     依據(jù) ``USE_ETAGS`` 的設(shè)置處理Etag : ETags 是HTTP級別上按條件緩存頁面的優(yōu)化機制。 如果 USE_ETAGS 為 True ,Django針對每個請求以MD5算法處理頁面內(nèi)容,從而得到Etag, 在此基礎(chǔ)上,Django將在適當(dāng)情形下處理并返回 Not Modified 回應(yīng)(譯注:
  •     請注意,還有一個條件化的 GET 中間件, 處理Etags并干得更多,下面馬上就會提及。

壓縮中間件

中間件類 django.middleware.gzip.GZipMiddleware .

這個中間件自動為能處理gzip壓縮(包括所有的現(xiàn)代瀏覽器)的瀏覽器自動壓縮返回]內(nèi)容。 這將極大地減少Web服務(wù)器所耗用的帶寬。 代價是壓縮頁面需要一些額外的處理時間。

相對于帶寬,人們一般更青睞于速度,但是如果你的情形正好相反,盡可啟用這個中間件。
條件化的GET中間件

Middleware class: django.middleware.http.ConditionalGetMiddleware .

這個中間件對條件化 GET 操作提供支持。 如果response頭中包括 Last-Modified 或 ETag 域,并且request頭中包含 If-None-Match 或 If-Modified-Since 域,且兩者一致,則該response將被response 304(Not modified)取代。 對 ETag 的支持依賴于 USE_ETAGS 配置及事先在response頭中設(shè)置 ETag 域。稍前所討論的通用中間件可用于設(shè)置response中的 ETag 域。 As discussed above, the ETag header is set by the Common middleware.

此外,它也將刪除處理 HEAD request時所生成的response中的任何內(nèi)容,并在所有request的response頭中設(shè)置 Date 和 Content-Length 域。
反向代理支持 (X-Forwarded-For中間件)

Middleware class: django.middleware.http.SetRemoteAddrFromForwardedFor .

這是我們在 什么是中間件 這一節(jié)中所舉的例子。 在 request.META['HTTP_X_FORWARDED_FOR'] 存在的前提下,它根據(jù)其值來設(shè)置 request.META['REMOTE_ADDR'] 。在站點位于某個反向代理之后的、每個request的 REMOTE_ADDR 都被指向 127.0.0.1 的情形下,這一功能將非常有用。 It sets request.META['REMOTE_ADDR'] based on request.META['HTTP_X_FORWARDED_FOR'] , if the latter is set. This is useful if you're sitting behind a reverse proxy that causes each request's REMOTE_ADDR to be set to 127.0.0.1 .

紅色警告!

這個middleware并 不 驗證 HTTP_X_FORWARDED_FOR 的合法性。

如果站點并不位于自動設(shè)置 HTTP_X_FORWARDED_FOR 的反向代理之后,請不要使用這個中間件。 否則,因為任何人都能夠偽造 HTTP_X_FORWARDED_FOR 值,而 REMOTE_ADDR 又是依據(jù) HTTP_X_FORWARDED_FOR 來設(shè)置,這就意味著任何人都能夠偽造IP地址。

只有當(dāng)能夠絕對信任 HTTP_X_FORWARDED_FOR 值得時候才能夠使用這個中間件。
會話支持中間件

Middleware class: django.contrib.sessions.middleware.SessionMiddleware .

這個中間件激活會話支持功能.

Middleware classes: django.middleware.cache.UpdateCacheMiddleware and django.middleware.cache.FetchFromCacheMiddleware .

這些中間件互相配合以緩存每個基于Django的頁面。
事務(wù)處理中間件

Middleware class: django.middleware.transaction.TransactionMiddleware .

這個中間件將數(shù)據(jù)庫的 COMMIT 或 ROLLBACK 綁定到request/response處理階段。 如果view函數(shù)成功執(zhí)行,則發(fā)出 COMMIT 指令。 如果view函數(shù)拋出異常,則發(fā)出 ROLLBACK 指令。

這個中間件在棧中的順序非常重要。 其外層的中間件模塊運行在Django缺省的 保存-提交 行為模式下。 而其內(nèi)層中間件(在棧中的其后位置出現(xiàn))將置于與view函數(shù)一致的事務(wù)機制的控制下。

相關(guān)文章

  • 3個Python?SQLAlchemy數(shù)據(jù)庫操作功能詳解

    3個Python?SQLAlchemy數(shù)據(jù)庫操作功能詳解

    Python?SQLAlchemy?是一個強大且多功能的?Python?SQL?工具包和對象關(guān)系映射?(ORM)?系統(tǒng),提供了一整套眾所周知的企業(yè)級持久性模式,本文為大家整理了它必須了解的3個數(shù)據(jù)庫操作功能,希望對大家有所幫助
    2023-09-09
  • 粗暴解決CUDA out of memory的問題

    粗暴解決CUDA out of memory的問題

    這篇文章主要介紹了粗暴解決CUDA out of memory的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • Python異步爬蟲多線程與線程池示例詳解

    Python異步爬蟲多線程與線程池示例詳解

    這篇文章主要為大家介紹了Python異步爬蟲多線程與線程池示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-09-09
  • 詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果

    詳解Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果

    這篇文章主要介紹了Python3網(wǎng)絡(luò)爬蟲(二):利用urllib.urlopen向有道翻譯發(fā)送數(shù)據(jù)獲得翻譯結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 一篇文章了解Python中常見的序列化操作

    一篇文章了解Python中常見的序列化操作

    這篇文章主要給大家介紹了軟玉Python中常見的序列化操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • selenium+python實現(xiàn)文件上傳操作的方法實例

    selenium+python實現(xiàn)文件上傳操作的方法實例

    文件上傳功能是我們在日常開發(fā)中經(jīng)常會遇到的一個需求,下面這篇文章主要給大家介紹了關(guān)于selenium+python實現(xiàn)文件上傳操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • Python繪制3d螺旋曲線圖實例代碼

    Python繪制3d螺旋曲線圖實例代碼

    這篇文章主要介紹了Python繪制3d螺旋曲線圖實例代碼,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • tornado框架blog模塊分析與使用

    tornado框架blog模塊分析與使用

    這篇文章主要介紹了tornado框架blog模塊的使用方法,大家參考使用吧
    2013-11-11
  • 詳解Python異常處理中的Finally else的功能

    詳解Python異常處理中的Finally else的功能

    本篇文章主要介紹了詳解Python異常處理中的Finally else的功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • python爬蟲之bs4數(shù)據(jù)解析

    python爬蟲之bs4數(shù)據(jù)解析

    這篇文章主要介紹了python爬蟲之bs4數(shù)據(jù)解析,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python爬蟲的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04

最新評論