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

发布于 2024-12-27 03:21:02 字数 851 浏览 1 评论 0原文

我正在使用 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。

I am using the middleware provided in https://gist.github.com/426829 to do cross site scripting.

However, when I add the middleware to MIDDLEWARE_CLASSES, I get the error:

ImproperlyConfigured: isn't a middleware module.

My MIDDLEWARE_CLASSES looks like this:

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',)

I have not changed any code in the gist. process_request and process_response methods are there. I am on Ubuntu running the latest versions of Python and Django.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半透明的墙 2025-01-03 03:21:02

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

What's TempMiddleware? The name of the module, or the name of the class? As you can see with the other entries, you need the fully-qualified Python path of the actual class. If TempMiddleware is the name of the module, you need TempMiddleware.MyMiddlewareClass (and you should really follow PEP8 naming conventions) - and if it's the name of the class, you need my_module.TempMiddleware.

追星践月 2025-01-03 03:21:02

编辑:

TempMiddleware 不可导入。这是类的名称,您必须输入整个导入路径。

例如:

'django.contrib.auth.middleware.AuthenticationMiddleware'

而不是

'AuthenticationMiddleware'

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

app_name.middlaware.TempMiddleware

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

可能的原因:

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

Edit:

TempMiddleware is not importable. It's the name of the class, you must put the entire import path.

E.g:

'django.contrib.auth.middleware.AuthenticationMiddleware'

and not

'AuthenticationMiddleware'

So if your class is in app_name/middleware.py, it should be

app_name.middlaware.TempMiddleware

It just mean that in your settings file, the variable MIDDLEWARE_CLASSES contains a list of modules in which one of the listed module is not a middleware.

Possible causes:

  • you added a middleware that doesn't declare middleware methods: fix that by removing the last middleware you added
  • you added a correct middleware but forget to put a coma at the end of the name, so strings are concatenated and it make django thinks 2 middlewares are in fact one: fix that by adding the missing coma
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文