`
lukejin
  • 浏览: 366147 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Django之Middleware

阅读更多

Middleware也就是所谓的中间件

 

Django的“中间件”的这个“中间”指的是 服务器接受到Request ----> View处理,以及View处理完 ----> 发送Response到客户端 这两个“中间”。

 

所以用过Java进行过Web编程的可能会发现,这个Django的中间件和Filter有几分相似,其实它更像Spring MVC中的拦截器。

 

那么如何写一个Django的中间件呢?

 

1.中间件只是实现了某些特定方法的普通对象

所以定义一个中间件很容易

你只需要定义一个普通的python类,然后实现如下四个方法中的某一个或者某几个

 

process_request(self, request)

process_view(self, request, view_func, view_args, view_kwargs)

process_response(self, request, response)

process_exception(self, request, exception)

 

 

 

各个函数执行的时机

 

 

process_request  接受request之后确定所执行的view之前  

 

process_view  确定了所要执行的view之后 view真正执行之前

 

process_response   view 执行之后 

 

process_exception(self, request, exception)  view抛出异常

 

 

 

2.安装中间件

 

 通过django-admin生成的项目的setting.py的配置文件中默认有如下设置,

 如果你需要添加自己的中间件,你需要在这个地方进行指定。

 

 

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
)
 

这里指定的顺序和实际运行时运行的顺序相关,

在request阶段:process_request,process_view 按照其所在类在配置中的先后顺序进行,

在response阶段:process_response,process_exception 则按照相反的顺序进行。

 

还有一点就是在整个流程中,每一个process_response都会执行到,

而其余三种,都可能会因为其他的直接retuen response或者不发生异常而不被执行到。

 

 

  • 大小: 55 KB
1
0
分享到:
评论

相关推荐

    PyPI 官网下载 | raygun_django_middleware-1.0.8-py2.py3-none-any.whl

    **PyPI 官网下载 | raygun_django_middleware-1.0.8-py2.py3-none-any.whl** PyPI(Python Package Index)是Python开发者常用的资源库,它提供了大量的第三方Python软件包,方便用户下载和安装。在本案例中,我们...

    PyPI 官网下载 | opencensus-ext-django-middleware-0.1.4.tar.gz

    Django,作为Python最流行的Web框架之一,以其高效、易用和强大的功能深受开发者喜爱。而中间件(Middleware)是Django框架中的一种特殊组件,它位于视图函数和请求/响应之间,可以拦截、修改或处理请求和响应,实现...

    django-middleware-global-request-0.2.0.tar.gz

    在Python的Web开发框架Django中,Middleware(中间件)是一种强大的工具,它允许开发者插入自定义的行为到Django的请求处理流程中。标题提到的"django-middleware-global-request-0.2.0.tar.gz"是一个针对Django的...

    详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击

    Django框架提供了一个内置的中间件`django.middleware.csrf.CsrfViewMiddleware`来帮助开发者防范这种攻击。 **一、Django后台处理** 1. **启用CSRF保护中间件**: 在Django项目的`settings.py`文件中,你需要...

    Python库 | optic_django_middleware-0.1.2-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:optic_django_middleware-0.1.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Django教程笔记之中间件middleware详解

    中间件介绍 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。... 'django.middleware.security.SecurityMiddleware', 'django.contrib

    适用于django及基于django框架的项目中添加jaeger实现的middleware.zip

    OPENTRACING_TRACER = 'opentracing_instrumentation.contrib.django.middleware.TracerMiddleware' JAEGER_AGENT_HOST = 'localhost' JAEGER_AGENT_PORT = 6831 JAEGER_SAMPLER_TYPE = 'const' JAEGER_SAMPLER...

    Django框架之中间件MiddleWare的实现

    Django框架中的中间件(MiddleWare)是一种强大的工具,它允许开发者在请求处理流程的各个阶段插入自定义逻辑,从而扩展Django的功能。中间件在处理请求和响应时起到一个拦截器的作用,使得开发者能够在不修改视图或...

    Django中Middleware中的函数详解

    ### Django Middleware 中函数详解 #### 一、Middleware概念与作用 在Django中,Middleware是一种轻量级、底层的“插件”系统,用于全局改变Django的输入或输出。Middleware的功能十分强大,它可以用来执行诸如...

    django-middleware:计算同一IP的每分钟请求数

    "django-middleware:计算同一IP的每分钟请求数"项目就是针对这一需求而设计的,它主要用于监控和控制网站的访问频率,防止恶意用户或自动化脚本频繁请求,保护服务器资源。 这个中间件的主要功能是记录并分析来自...

    django中CSRF的问题及解决

    - **解决方案**:更新`settings.py`中的`MIDDLEWARE_CLASSES`列表,用`'django.middleware.csrf.CsrfViewMiddleware'`替换旧的中间件名称,并在模板中的表单内加入`{% csrf_token %}`标签。 ```python ...

    breach_buster:用于django的Gzip中间件,可以(希望)防止BREACH

    'django.middleware.gzip.GZipMiddleware', 'johnny.middleware.LocalStoreClearMiddleware', 用突破破坏者的代替django的GzipMiddleware。 MIDDLEWARE_CLASSES = ( 'breach_buster.middleware.gzip....

    django如何允许跨域请求.docx

    注意,我们需要注释掉 'django.middleware.csrf.CsrfViewMiddleware',因为跨域请求不需要 CSRF 保护。 三、配置 CORS 选项 在 settings.py 文件的底部,我们需要添加 CORS 的配置选项。这些选项将确定哪些域名被...

    深入理解Django的中间件middleware

    在Django的settings.py文件中,MIDDLEWARE配置项是一个列表,用于声明项目中激活的中间件类。配置的顺序非常重要,因为中间件是按照列表中定义的顺序一层层执行的。中间件的依赖性决定了其执行顺序,有些中间件需要...

    Python库 | django-user-language-middleware-0.0.1.tar.gz

    随后,在Django项目的`settings.py`文件中,我们需要将这个中间件添加到`MIDDLEWARE`设置中,通常放在`'django.middleware.locale.LocaleMiddleware'`之前,因为我们需要在确定语言环境之前就应用这个中间件。...

    2. Django配置信息

    'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ``` 4. **URL配置**:...

Global site tag (gtag.js) - Google Analytics