47 Stimmen

Das Modul "django.core.context_processors" definiert keinen aufrufbaren "auth"-Anfrageprozessor

Ich habe eine Django Live-Website, ich möchte eine Art von Wartung auf sie zu tun, aber wenn ich es heruntergeladen und versucht, es von meinem lokalen Rechner zu öffnen und mein Debug-Modus ist wahr habe ich diese Fehlermeldung erhalten:

ImproperlyConfigured at /

Module "django.core.context_processors" does not define a "auth" callable request processor

Ich verwende Python 2.5

Ich wäre für jede Hilfe dankbar.

96voto

Alasdair Punkte 275312

Es sieht so aus, als ob Sie ein Upgrade auf Django 1.4 oder höher durchgeführt haben.

Der Prozessor für den Authentifizierungskontext wurde verschoben von django.core.context_processors.auth a django.contrib.auth.context_processors.auth . Der Umzug begann in Django 1.2, und django.core.context_processors.auth wurde in Django 1.4 vollständig entfernt.

Ich empfehle Ihnen, die gleiche Version von Django auf Ihrer Entwicklungs- und Produktionsumgebung laufen zu lassen, um Fehler wie diesen zu vermeiden.

Wenn Sie auf Django 1.4 aktualisieren, müssen Sie die folgende Änderung an TEMPLATE_CONTEXT_PROCESSORS in Ihrer Einstellungsdatei:

# old
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
                               ...
)
# new
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
                               ...
)

Bei der Migration sind die Versionshinweise ( 1.2 , 1.3 , 1.4 ) sind nützlich, um Änderungen wie diese zu erkennen.

1voto

Lorenz Lo Sauer Punkte 22044

Überprüfen Sie zunächst Ihre Django-Version:

Gehen Sie zu Ihrer Anwendung und führen Sie

$./manage.py shell
import django
django.get_version()

In Django >1.4 wurde die zuvor als veraltet markierte Einstellung DATABASE_ENGINE entfernt wird. (Dieser tic/toc-ähnliche Zyklus ist typisch für das Django-Projekt. )

Ich verwende den folgenden Code, um alte Skripte zu reparieren, die aus bestimmten Gründen veraltet bleiben müssen...

    if not ((hasattr(settings, 'DATABASE_ENGINE') and (settings.DATABASES['default']['ENGINE'] or 'ENGINE' in [x for y in settings.DATABASES.itervalues() for x in y]))):
      try:
        setattr(settings, 'DATABASE_ENGINE', settings.DATABASES['default']['ENGINE'])
      except:
        raise Exception('No default ENGINE set in settings.DATABASES!')

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X