2016-07-20 14 views
-2

Ich habe Probleme mit Middleware Ich habe eine Menge Fragen dazu gefunden, aber nichts hilft in meinem Fall.Django Middleware 'Modul' Objekt ist nicht aufrufbar

Ich benutze Middleware, um Current_user in meinem Modell zu verwenden, um geänderte Benutzer in Save-Methode zu speichern, ohne dies in Sicht zu schreiben.

ist hier original post mit diesem Code:

Middleware

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 

Es ist etwas falsch in diesem Code ist, weil ich bin immer Fehler wie:

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 

Meine Middleware-Einstellungen:

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

Können Sie mir einen Rat geben, wo ist Fehler oder etwas? Ich habe keine andere Idee, also hoffe ich, dass du welche hast.

+1

Bitte zeigen Sie Ihre Middleware-Einstellungen an. Außerdem ** tu das niemals **. –

+0

@DanielRoseman was meinst du nie das jemals tun?/Ich habe Fragen aktualisiert und Middleware-Einstellungen hinzugefügt. – Thaian

+0

Was ist in task.curreny_user.py? kann ich Ihre Projektbaumstruktur sehen? – lapinkoira

Antwort

3

Sie müssen den vollständigen Pfad Ihrer Middleware angeben Klasse. Nicht das Modul, das die Middleware enthält.

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

Beachten Sie, dass Sie oben viele Beispiele hatten.