`
san_yun
  • 浏览: 2653105 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

django提供的Middleware

 
阅读更多

MIDDLEWARE_CLASSES = (
    "django.middleware.common.CommonMiddleware",
    "django.middleware.transaction.TransactionMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "api.middleware.APIMiddleware",
    "safe.middleware.SafeMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",

 

TransactionMiddleware

如果你使用的数据库支持数据库事务,那么Django会为你的程序提供事务支持。模型情况下,在Django中事务是自动提交的。也就是说如果你执 行了model.save(),model.delete()方法后,更改会被立即执行。这种机制和数据库的自动提交事务机制类似。当你在Django中 执行数据库更新操作时,Django会产生 INSERT/UPDATE/DELETE 语句,然后执行COMMIT进行提交,记住这里没有默认的回滚(ROLLBACK)机制。

如果我们开发的是网络应用,强烈建议使用TransactionMiddleware中间件。它的原理是,当启动一个HTTP请求时,Django 会开启一个事务,如果在发出返回信息之前没有出现异常,那么这个事务会被提交(COMMIT);如果出现异常,事务会被回滚(ROLLBACK)。

要使用TransactionMiddleware 中间件需要在settings.py中添加它,具体方法是:找到MIDDLEWARE_CLASSES并添加代码如下:

MIDDLEWARE_CLASSES = (
’django.middleware .cache .UpdateCacheMiddleware,
’django.contrib .sessions .middleware .SessionMiddleware,


’django.middleware .common .CommonMiddleware,


’django.middleware .transaction .TransactionMiddleware,
’django.middleware .cache .FetchFromCacheMiddleware,
)

注意TransactionMiddleware 所在的顺序是非常重要的,如果你把SessionMiddleware放在它的后面,那么Session的创建也会被包装在事务中。不过其它几个中间件不 会受到影响,比如:CacheMiddleware, UpdateCacheMiddleware和FetchFromCacheMiddleware 。

分享到:
评论

相关推荐

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

    `raygun_django_middleware`是Django开发者的一个实用工具,它提供了与Raygun服务的集成,帮助监控和追踪应用中的错误。通过PyPI下载的`.whl`文件,用户可以轻松地在Python 2或3的环境中安装和使用这个中间件,从而...

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

    《PyPI官网下载:探索opencensus-ext-django-middleware-0.1.4.tar.gz中的精华内容》 在Python的开发世界里,PyPI(Python Package Index)扮演着至关重要的角色,它是一个庞大的资源库,集合了各种Python库和模块...

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

    标题提到的"django-middleware-global-request-0.2.0.tar.gz"是一个针对Django的中间件,它的主要功能是提供全局的Request对象,从而避免在多线程环境下因并发访问导致的用户信息获取错误。 在Django中,Request...

    详解利用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及基于django框架的项目中添加jaeger实现的middleware.zip

    在Python的Web开发领域,Django是一个非常流行的高级框架,它提供了强大的功能和高效能。Jaeger是另一个关键工具,它是Uber开源的分布式追踪系统,主要用于监控和性能优化。本教程将详细介绍如何在Django项目中集成...

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

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

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

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

    Django中Middleware中的函数详解

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

    django中CSRF的问题及解决

    在Django框架中,为了防止CSRF攻击,提供了一套内置的中间件——`CsrfViewMiddleware`,用于验证每个POST请求是否包含有效的CSRF令牌。 #### 三、Django CSRF问题及解决方案 1. **错误:“CSRF verification ...

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

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

    Django框架之中间件MiddleWare的实现

    总结来说,Django的中间件机制为开发者提供了灵活且强大的手段来扩展和定制其应用程序的行为。通过合理地使用中间件,可以有效地提升代码的复用性和可维护性,同时保持Django项目的整洁结构。在理解和使用中间件时,...

    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的扩展库——`django-user-language-middleware`,它允许我们为用户提供更加个性化的多语言体验。这个库的版本为0.0.1,包含在名为`django-user-language-middleware-0.0.1.tar.gz`...

    2. Django配置信息

    Django是Python编程语言中的一个强大且流行的Web框架,它为开发者提供了许多便捷的功能和工具,使得构建高效、可扩展的Web应用变得简单。在Django中,配置信息扮演着至关重要的角色,它定义了项目的运行环境和行为。...

    基于Python-Django框架实现的学生选课管理系统1

    ango.contrib.staticfiles', 'user', 'course']MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common....

Global site tag (gtag.js) - Google Analytics