Django中间件:不是中间件模块错误

时间:2012-01-16 09:18:19

标签: django django-middleware

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

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

  

ImproperlyConfigured:不是中间件模块。

我的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。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

编辑:

TempMiddleware不可导入。它是类的名称,您必须放置整个导入路径。

E.g:

'django.contrib.auth.middleware.AuthenticationMiddleware'

而不是

'AuthenticationMiddleware'

因此,如果您的类位于app_name / middleware.py中,那么它应该是

app_name.middlaware.TempMiddleware

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

可能的原因:

  • 您添加了一个不声明中间件方法的中间件:通过删除您添加的最后一个中间件来解决此问题
  • 你添加了一个正确的中间件,但忘记在名称的末尾加上昏迷,所以字符串连接在一起,这使得django认为2个中间件实际上是一个:通过添加缺少的昏迷来修复它
相关问题