Объект промежуточного программного обеспечения Django 'модуль' не вызывается

У меня проблема с промежуточным программным обеспечением. Я нашел много вопросов по этому поводу, но в моем случае ничего не помогло.

Я использую промежуточное программное обеспечение, чтобы получить current_user для использования в моей модели для сохранения измененного пользователя в методе сохранения без записи этого в поле зрения.

Вот исходное сообщение с этим кодом:

Промежуточное ПО

from threading import local

_user = local()


class CurrentUserMiddleware(object):
    def process_request(self, request):
        _user.value = request.user


def get_current_user():
    return _user.value

В этом коде что-то не так, потому что я получаю такую ​​ошибку:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Python35-32\Lib\wsgiref\handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\contrib\staticfiles\handlers.py", line 63, in __call__
    return self.application(environ, start_response)
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\core\handlers\wsgi.py", line 158, in __call__
    self.load_middleware()
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\core\handlers\base.py", line 53, in load_middleware
    mw_instance = mw_class()
TypeError: 'module' object is not callable
[20/Jul/2016 10:51:44] "GET /panel/ HTTP/1.1" 500 59
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python35-32\Lib\wsgiref\handlers.py", line 137, in run
    self.result = application(self.environ, self.start_response)
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\contrib\staticfiles\handlers.py", line 63, in __call__
    return self.application(environ, start_response)
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\core\handlers\wsgi.py", line 158, in __call__
    self.load_middleware()
  File "C:\Users\loc\dJangoEnvironment\lib\site-packages\django\core\handlers\base.py", line 53, in load_middleware
    mw_instance = mw_class()
TypeError: 'module' object is not callable
[20/Jul/2016 10:51:44] "GET /favicon.ico HTTP/1.1" 500 59

Мои настройки промежуточного программного обеспечения:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.gzip.GZipMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'reversion.middleware.RevisionMiddleware',
    'task.current_user',
)

Вы можете мне посоветовать, где ошибка или что-то в этом роде? У меня нет другой идеи попробовать, поэтому я надеюсь, что она у вас есть.


person Thaian    schedule 20.07.2016    source источник
comment
Пожалуйста, покажите свои настройки промежуточного программного обеспечения. Кроме того, никогда не делайте этого.   -  person Daniel Roseman    schedule 20.07.2016
comment
@DanielRoseman, что ты имеешь в виду, никогда не делай этого? / Я обновил вопросы и добавил настройки промежуточного ПО   -  person Thaian    schedule 20.07.2016
comment
что внутри task.curreny_user.py? Могу я увидеть древовидную структуру вашего проекта?   -  person lapinkoira    schedule 20.07.2016


Ответы (1)


Вы должны указать полный путь к классу промежуточного программного обеспечения. Не модуль, содержащий промежуточное ПО.

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.gzip.GZipMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'reversion.middleware.RevisionMiddleware',
    'task.current_user.CurrentUserMiddleware',
)

Обратите внимание, что у вас было много примеров прямо выше.

person Antoine Pinsard    schedule 20.07.2016