【问题标题】:Django middleware: Isn't a middleware module errorDjango中间件:不是中间件模块错误
【发布时间】:2012-01-16 09:18:19
【问题描述】:

我正在使用https://gist.github.com/426829 中提供的中间件来执行跨站点脚本。

但是,当我将中间件添加到 MIDDLEWARE_CLASSES 时,我得到了错误:

配置不当:不是中间件模块。

我的MIDDLEWARE_CLASSES 看起来像这样:

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

我没有更改要点中的任何代码。 process_requestprocess_response 方法在那里。我在 Ubuntu 上运行最新版本的 Python 和 Django。

【问题讨论】:

  • 向我们展示您的 MIDDLEWARE_CLASSES 设置。
  • MIDDLEWARE_CLASSES = ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth. middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'TempMiddleware', )
  • 它能够定位中间件模块。读取错误 - TempMiddleware 不是中间件模块。
  • 是的。在 shell 中导入作品。
  • 什么是TempMiddleware - 要点指的是XsSharing

标签: django django-middleware


【解决方案1】:

TempMiddleware 是什么?模块名,还是类名?正如您在其他条目中看到的那样,您需要实际类的完全限定的 Python 路径。如果TempMiddleware 是模块的名称,则需要TempMiddleware.MyMiddlewareClass(并且您应该真正遵循PEP8 命名约定) - 如果它是类的名称,则需要my_module.TempMiddleware

【讨论】:

  • 谢谢,我现在明白了。但即使现在后端正在工作,我仍然收到以下错误。 Access-Control-Allow-Origin 不允许来源127.0.0.1
【解决方案2】:

编辑:

TempMiddleware 不可导入。是类名,必须放完整的导入路径。

例如:

'django.contrib.auth.middleware.AuthenticationMiddleware'

而不是

'AuthenticationMiddleware'

所以如果你的类在 app_name/middleware.py 中,它应该是

app_name.middlaware.TempMiddleware

这只是意味着在您的设置文件中,变量MIDDLEWARE_CLASSES 包含一个模块列表,其中列出的模块之一不是中间件。

可能的原因:

  • 您添加了一个未声明中间件方法的中间件:通过删除您添加的最后一个中间件来解决此问题
  • 您添加了正确的中间件,但忘记在名称末尾添加逗号,因此字符串被连接起来,这使 django 认为 2 个中间件实际上是一个:通过添加缺少的逗号来解决此问题

【讨论】:

  • 你提到的两件事似乎都没有问题。
  • 然后回复@Dominic Rodger
  • 发布了上面的设置。让我知道这里可能出了什么问题。对 Django 来说非常新。 :)
猜你喜欢
  • 2016-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多