|
繼續(xù)上篇關(guān)于Django的日志,探索Django的其他方面。 首先想到的是Django里面有沒(méi)有類似filter的組件。遺憾的是,并未發(fā)現(xiàn)Django中有類似過(guò)濾器或者攔截器的概念。然而,Django提供了功能或許更為強(qiáng)大(至少是不弱于)這些概念的新東西:middleware。 設(shè)想這樣的需求:在用戶未登錄之前,他訪問(wèn)任何頁(yè)面,都將轉(zhuǎn)入登錄頁(yè)面,要求其登錄。這樣的判斷最適合放在頁(yè)面邏輯的前端,而不是在頁(yè)面邏輯中實(shí)現(xiàn)。 我們寫(xiě)這樣的一個(gè)middleware,它攔截所有訪問(wèn)非login頁(yè)面的請(qǐng)求,檢測(cè)其cookie,并判斷將請(qǐng)求轉(zhuǎn)向login頁(yè)面或者其請(qǐng)求的頁(yè)面。 middleware代碼如下:
在settings.py中配置此middleware:
當(dāng)用戶第一次請(qǐng)求musician_list,會(huì)轉(zhuǎn)向兩全其美。 只有用戶訪問(wèn)過(guò)login,設(shè)置了cookie,再訪問(wèn)musician_list,才能成功。 |
|
|
來(lái)自: java_laq小館 > 《Python》