我使用django1.6.
django框架沒有urlfilter這樣的原生中間件,但是靈活的django設計者為我們留下了更自由的渠道。
在沒有使用django以前,我沒有接觸過如此瀟灑的編程方式,中間件就是MIDDLEWARE_CLASSES,這個配置在你的settings文件中,當然所有的中間件,包括django的session,cookie中間件,CsrfViewMiddleware中間件,她們都是人家設計大媽為我們寫好了類,我們只需要配置一下settings,run server一下就成功駐軍我們web應用了。
如果自己不寫一次中間件,怎么會了解設計者,django是怎么運行的呢???
廢話不說了。
新建一個應用,叫management,然和在此應用下,自己新建一個文件叫:statisti_user_activity.py
中間件的秘密在於 繼承和重寫方法,然和配置。
三步驟:1創建類
class RqsStatistcsMiddleware(object):
def process_request(self,request):重寫方法
然后去settings下配置你這個類。在MIDDLEWARE_CLASSES里寫上你的類的應用+類名即可。如我們這個: management.statisti_uset_activity.RqsStatistcsMiddleware
runserver 看看吧。記住MIDDLEWARE_CLASSES的順序是按照你的配置先后順序的哦。
中間件的作用:
我平生最恨那些只講原理不講試用場景的人,哈哈,做人嘛要給被人一些功夫的適用場景。
一句話行如中間件作用:你最想在別人訪問你的程序前作些什么,那么它可以幫你實現。
場景一:你要查看所有request是否是你指定的ip訪問:那ok咯
def process_request(self,request):
if request.META.has_key('HTTP_X_FORWARDED_FOR'):
if request.META['HTTP_X_FORWARDED_FOR'] ! = '你想要的妹子的ip':
return HttpResponseForbidden('<h1 style="text-align:center;margin-top:20px;">不好意思,你不是我們蒙娜麗莎!</h1>')
else:
return HttpResponseForbidden('<h1 style="text-align:center;margin-top:20px;">不好意思,你不是我們蒙娜麗莎!</h1>')
可以指定訪問,當然可以禁止某些訪問了。
場景二:
檢查用戶訪問的行為:比如某些url,是網站權限url,需要驗證口令,驗證是否付費等等。
場景三:
統計用戶訪問:以后做定點推送准備
場景四:
統計非法訪問,適用新進程計時器,或者redis等發現異常訪問次數,做相應操作
總之太多太多,,,還是那句話:你最想在別人訪問你的程序前作些什么,那么它可以幫你實現。
哈哈:我是老銀,喜歡的大家一起學習,一起討論。
