Django中间件:Isn';t中间件模块错误

Django中间件:Isn';t中间件模块错误,django,django-middleware,Django,Django Middleware,我正在使用中提供的中间件执行跨站点脚本编写 但是,当我将中间件添加到middleware\u CLASSES时,我得到了错误: 配置不当:不是中间件模块 我的中间件\u类如下所示: MIDDLEWARE_CLASSES = ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',

我正在使用中提供的中间件执行跨站点脚本编写

但是,当我将中间件添加到
middleware\u CLASSES
时,我得到了错误:

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

我的
中间件\u类
如下所示:

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',)
我没有更改要点中的任何代码<代码>处理请求和
处理响应
方法都存在。我在Ubuntu上运行最新版本的Python和Django。

编辑:

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

例如:

而不是

'AuthenticationMiddleware'
因此,如果您的类位于app_name/middleware.py中,则应该是

app_name.middlaware.TempMiddleware

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

可能的原因:

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

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

      显示您的中间件类设置。中间件类=('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
      ?您提到的两件事似乎都不是问题。然后回答@Dominic Rodger发布了上述设置。让我知道可以做什么我错了。对Django来说很陌生。谢谢,我现在明白了。但即使现在后端工作,我仍然得到以下错误。访问控制不允许原点允许原点。
      app_name.middlaware.TempMiddleware