我使用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等发现异常访问次数,做相应操作

总之太多太多,,,还是那句话:你最想在别人访问你的程序前作些什么,那么它可以帮你实现。

哈哈:我是老银,喜欢的大家一起学习,一起讨论。

python,django做中间件屏蔽非法访问的更多相关文章

  1. python/ Django之中间件

    python/ Django之中间件 一.中间件 中间件共分为: (1)process_request(self,request) (2)process_view(self, request, cal ...

  2. django基于中间件的IP访问频率控制

    一.中间件的代码 注意:成功时返回的是None,那样才会走视图层,返回httpresponse就直接出去了 import time from django.utils.deprecation impo ...

  3. Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

    目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax c ...

  4. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)

    一.ajax登录示例 新建项目login_ajax 修改urls.py,增加路径 from app01 import views urlpatterns = [ path('admin/', admi ...

  5. 浅谈Django的中间件与Python的装饰器

    浅谈Django的中间件 与Python的装饰器 一.原理 1.装饰器是Python的一种语法应用,利用闭包的原理去更改一个函数的功能,即让一个函数执行之前先到另外一个函数中执行其他需求语句,在执行该 ...

  6. Django 关闭Debug后使用Nginx做静态文件的访问

    Django 关闭Debug后使用Nginx做静态文件的访问 关闭Django 的Debug参数 1 . 修改settings.py配置文件 DEBUG = False 2 . settings.py ...

  7. 咏南中间件修正了一处BUG,调用中间件插件会报:非法访问

    咏南中间件修正了一处BUG,调用中间件插件会报:非法访问将以下方法修改成如下的代码即可function TServerMethods1.GetSvrData(const accountNo, defi ...

  8. Django:之中间件、微信接口和单元测试

    Django中间件 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通过中间件中的 pr ...

  9. python Django知识点总结

    python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...

随机推荐

  1. RStudio相关

    1.设置默认目录,tool-Global Options,设定后要重启RStudio才能生效2.Ctrl+l清屏控制台3.↑健.回忆前一条命令,↓健相反4.Ctrl+↑,查找相应前缀的历史记录5.创建 ...

  2. selenium ide脚本回放出现element not found

    原因: 点击按钮,没有设置时间延迟,而页面加载,需要时间:当页面元素未加载完全,执行点击事件,就会报错:element... not found. 解决方案: 在点击事件前添加新的COMMAND.设置 ...

  3. 【转】mysql查询结果输出到文件

    转自:http://www.cnblogs.com/emanlee/p/4233602.html mysql查询结果导出/输出/写入到文件 方法一: 直接执行命令: mysql> select ...

  4. Unity3D 中的3种坐标系

    Unity3D Script API : Camera 若干文章: 1.Screen VS Viewport What is the difference 2.Screen,Viewport有什麽區別 ...

  5. android intent和intent action大全

    1.Intent的用法:(1)用Action跳转1,使用Action跳转,如果有一个程序的AndroidManifest.xml中的某一个 Activity的IntentFilter段中 定义了包含了 ...

  6. HEAD FIRST HTML & CSS学习笔记

    CSS部分 1. border-bottom属性控制元素下边框的外观.   eg: border-bottom:1px solid maroon;  P265 下划线 text-decoration: ...

  7. VS2010开发AutoCAD 2012 .net应用程序调试时断点不起作用

    VS2010+ AutoCAD 2012开发调试过程中,发现普通的Class里面的断点是可以跟踪到的,可能是创建自定义的Form做界面是,Form1.cs中的代码断点却不管用.原因在于AutoCAD的 ...

  8. 1. Two Sum I & II & III

    1. Given an array of integers, return indices of the two numbers such that they add up to a specific ...

  9. opencv 小任务1 图片的缩放

    #include <opencv2/opencv.hpp> using namespace std; int main() { double fScale = 0.2; //缩放倍数 Cv ...

  10. java selenium (一) selenium 介绍

    Selenium 是目前用的最广泛的Web UI 自动化测试框架. 本系列文章,将深入简出来讲解selenium 的用法 文章的末尾处, 有整个系列的链接 阅读目录 selenium 的命名 sele ...