Промежуточное ПО Django: ошибка модуля промежуточного ПО - PullRequest
4 голосов
/ 16 января 2012

Я использую промежуточное программное обеспечение, предоставленное в 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.

Ответы [ 2 ]

3 голосов
/ 16 января 2012

Что такое TempMiddleware? Название модуля или название класса? Как вы можете видеть с другими записями, вам нужен полный путь Python реального класса. Если TempMiddleware является именем модуля, вам нужно TempMiddleware.MyMiddlewareClass (и вы действительно должны следовать PEP8 соглашениям об именах) - и если это имя класса, вам нужно my_module.TempMiddleware.

1 голос
/ 16 января 2012

Редактировать:

TempMiddleware не импортируется.Это имя класса, вы должны указать полный путь импорта.

Например:

'django.contrib.auth.middleware.AuthenticationMiddleware'

, а не

'AuthenticationMiddleware'

Так что, если ваш класс находится в app_name/middleware.py, это должно быть

app_name.middlaware.TempMiddleware

Это просто означает, что в вашем файле настроек переменная MIDDLEWARE_CLASSES содержит список модулей, в которых один из перечисленных модулей не является промежуточным ПО.

Возможные причины:

  • вы добавили промежуточное ПО, которое не объявляет методы промежуточного ПО: исправьте это, удалив последнее добавленное вами промежуточное ПО
  • , добавив правильноепромежуточное ПО, но не забудьте поставить кому в конце имени, поэтому строки объединяются, и это заставляет django думать, что два промежуточных ПО на самом деле одно: исправить это, добавив пропущенную кому
...