Django:自定义中间件被调用两次

2024-02-20

我有一个自定义中间件,每个请求都会调用两次,我不明白为什么。 这是我的中间件:

class MyMiddleWare(object):

  def process_request(self, request):
    print 'FOO'
    return None

这是我的中间件设置:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'MyMiddleware',
)

这是主页请求后控制台中的输出:

[28/Jun/2013 19:48:26] FOO
[28/Jun/2013 19:48:26] "GET / HTTP/1.1" 200 7468
[28/Jun/2013 19:48:27] FOO

我尝试注释掉所有其他中间件,问题是一样的。我应该怎么办?

ps:所描述的行为在每个视图中都是可复制的

UPDATE:

我尝试实施process_view而不是process_request它按预期被调用一次......为什么?

UPDATE 2:

process_response被称为两次process_request

UDATE 3:

噢,该死!这是对 favicon.ico 的请求(我自己没有定义)...谁在调用这个文件?


问题是,如果您通过将 favicon.ico 定义为 django url 来提供服务(如下面的代码):

(r'^favicon\.ico$',
  'django.views.generic.simple.redirect_to',
  {'url': settings.MEDIA_URL+'images/favicon.ico'}),

您的所有中间件都会被调用两次:1 次用于您请求的页面 + 1 次用于 favicon(始终由浏览器调用)。 解决方案很简单:不要使用 django url 来为您的 vaficon 提供服务,而是输入如下内容:

<link rel="icon" type="image/png" href="{% static 'core/img/favicon.ico' %}" />

in the <head>您的基本模板!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:自定义中间件被调用两次 的相关文章

随机推荐

  • 从 Azure Blob 存储读取文件

    我想从 azure 存储中读取 PDF 文件字节 因为我有一个文件路径 https hostedPath pdf 1001 12 Jun 2012 18 39 05 594 pdf 那么是否可以通过直接传递路径名来从 blob 存储中读取内
  • DDD是否适合所有类型的应用?

    对于这里和其他论坛提出的很多问题 我看到的一个常见反应是 您不需要为此执行 DDD 它是一个简单的 CRUD 应用程序 DDD 是一种过度设计 嗯 我是 DDD 的新手 我觉得 DDD 中有很多元素具有普遍吸引力并且可以全面使用 无论您的应
  • Powershell 中的本机 .tar 提取

    我有一个 tar gz我需要提取的文件 我已经处理了gunzip位GzipStream对象来自System IO Compression 但我找不到任何用于处理该命名空间中的 tarball 的内容 有没有办法处理 tarPowershel
  • logrotate 日期格式似乎不支持 %H:%M:%S

    我是 logrotate 的新手 当配置到 dateformat 属性时 logrotate 似乎不支持 strftime H 这是配置 daily rotate 2 size 3M missingok notifempty dateext
  • 在 Prolog 中交换列表的连续项

    我正在尝试编写可以交换列表中两个元素的 Prolog 代码 但前提是它们是彼此连续 那是 conseq swap d e a g d e f X 应该给出 X a g e d f d 和 e 是连续的 However conseq swap
  • 在单个事务中发送多个 SQL 命令

    我有一个巨大的清单INSERT INTO 字符串 目前我运行它们 using SqlConnection connection new SqlConnection connectionString connection Open forea
  • 按钮位于画布中央

    我有 4 个重叠的画布 充当图层 绝对定位并水平和垂直居中 在此画布上 我想在画布中心的一列中覆盖四个 HTML CSS 按钮 用于游戏菜单 我是 CSS 和 HTML 的新手 我一直无法弄清楚如何让按钮在绝对定位的画布上居中 我怎样才能做
  • 通用扩展类并实现接口[重复]

    这个问题在这里已经有答案了 这听起来可能是一个奇怪的问题 但是如何定义一个必须扩展类并实现接口的泛型呢 我目前有一个具有以下原型的通用函数 public static
  • cudaArray 与设备指针

    我对设备指针和设备指针的预期用途之间的区别感到困惑cudaArray结构 有人可以解释一下为什么我会使用其中一种而不是另一种吗 我的基本问题是 在浏览文档并阅读 CUDA by Example 一书之后 我不明白 API 设计者的意图 从我
  • 使用 Sprite Kit 创建自定义滑块 - 如何传递@selector?

    我正在开发的 Sprite Kit 游戏使用自定义滑块充当颜色选择器 颜色是从滑块轨道图形中选取的 这是一个UIImage包含梯度 我研究过使用定制的UISlider 但是标准的 IOS UI 控件不能很好地与 Sprite Kit 的场景
  • 如何通过 python 脚本在 ArcGIS 中添加 shapefile?

    我正在尝试使用 Python 自动执行 ArcGIS Desktop 通常使用 ArcMap 中的各种任务 并且我一直需要一种将形状文件添加到当前地图的方法 然后对其做一些事情 但那是另一个故事 到目前为止我能做的最好的就是添加一个laye
  • AngularJS ng-options 将数据类型添加到选项的值

    尝试使用最新版本 1 5 8 的 AngularJS 和 ng options 来填充下拉列表 问题是它添加了数据类型和值 如下所示
  • 如何将YUV_420_888图像转换为位图[重复]

    这个问题在这里已经有答案了 我正在开发 AR 项目 我需要捕获当前帧并将其保存到图库 我可以使用AR core中的Frame类获取图像 但图像的格式是YUV 420 888 我已经尝试了很多解决方案来将其转换为位图 但无法解决它 这就是我转
  • 在 Safari 9.1.2 中,悬停时的 SVG 转换失败 (11601.7.7)

    我试图在悬停时将文本和 svg 淡入另一种颜色 a color ff0000 display inline block margin 0 0 0 1em text decoration none text transform lowerca
  • Linux 中 C 语言的消息框

    我想在 Linux 中用 C 执行程序后显示 成功 弹出消息 它应该在 KDE 和 GNOME 上运行 我怎样才能做到这一点 您正在寻找桌面通知 http www galago project org specs notification
  • 如何将 Apache 配置为仅分叉一个子进程/工作进程?

    我希望启动 apache 以便它分叉一个子进程 我正在分析一个模块 我知道 X 标志 根据文档 两个指令对活动子进程的数量设置了硬性限制 以及子进程中的服务器线程数 并且只能是 通过完全停止服务器然后再次启动来更改 ServerLimit
  • JFormattedTextField 仅限于 0 或 1

    我想限制用户可以在文本字段中输入的字符 如何限制 JFormattedTextField 仅接受 0 或 1 的 8 位数字 Use 文档过滤器 https stackoverflow com a 9430683 714968与模式JTex
  • 使用 FBGraph 登录 Facebook

    我是 iOS 开发新手 我想从我的 iPhone 应用程序连接到 Facebook 我跟着FBGraph API https github com reallylongaddress iPhone Facebook Graph API tr
  • Docker - 在源文件中构建 Arg

    我正在尝试构建一个 Docker 容器 我想将其源标签作为参数传递 构建脚本 docker build pull true build arg version version Docker 文件 ARG version FROM regis
  • Django:自定义中间件被调用两次

    我有一个自定义中间件 每个请求都会调用两次 我不明白为什么 这是我的中间件 class MyMiddleWare object def process request self request print FOO return None 这