47 votes

Le module "django.core.context_processors" ne définit pas de processeur de requête appelable "auth".

J'ai un site Web Django en direct, je veux faire une sorte de maintenance sur lui, mais quand je l'ai téléchargé et essayé de l'ouvrir à partir de ma machine locale et de mon mode de débogage est vrai. J'ai rencontré cette erreur :

ImproperlyConfigured at /

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

J'utilise Python 2.5.

Je vous serais reconnaissant de toute aide.

95voto

Alasdair Points 36535

Il semble que vous ayez effectué une mise à niveau vers Django 1.4 ou une version ultérieure.

Le processeur de contexte d'authentification a été déplacé de django.core.context_processors.auth a django.contrib.auth.context_processors.auth . Le mouvement a commencé dans Django 1.2, et django.core.context_processors.auth a été complètement supprimé dans Django 1.4.

Je vous recommande d'exécuter la même version de Django sur vos environnements de développement et de production pour éviter ce genre d'erreurs.

Lorsque vous effectuez une mise à niveau vers Django 1.4, vous devez apporter la modification suivante à l'adresse suivante TEMPLATE_CONTEXT_PROCESSORS dans votre fichier de paramètres :

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

Lors de la migration, les notes de mise à jour ( 1.2 , 1.3 , 1.4 ) sont utiles pour détecter les changements de ce type.

1voto

Lo Sauer Points 5469

Vérifiez d'abord la version de votre Django :

allez dans votre application et exécutez

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

Dans Django >1.4, le paramètre précédemment déprécié-marqué DATABASE_ENGINE est supprimé. (Ce cycle de dépréciation/suppression de type tic/toc est typique du projet Django. )

J'utilise le code suivant pour corriger les anciens scripts, qui pour certaines raisons doivent être maintenus obsolètes...

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

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X