我使用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等发现异常访问次数,做相应操作
总之太多太多,,,还是那句话:你最想在别人访问你的程序前作些什么,那么它可以帮你实现。
哈哈:我是老银,喜欢的大家一起学习,一起讨论。