我使用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_request
和process_response
方法。我在Ubuntu上运行最新版本的Python和Django。
答案 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
包含一个模块列表,其中列出的模块之一不是中间件。
可能的原因: