2015-07-27 20 views
9

Voglio usare Django-Allauth, quindi ho installato come segue e funziona perfettamente nel mio localhost per laptop; ma quando io lo tiro in mio assistente, ho incontro con il seguente errore:Nessun modulo denominato 'allauth.account.context_processors'

No module named 'allauth.account.context_processors' 

Cosa devo fare?

# Django AllAuth 
TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       # Already defined Django-related contexts here 

       # `allauth` needs this from django 
       'django.contrib.auth.context_processors.auth', 
       'django.core.context_processors.request', 

       # `allauth` specific context processors 
       'allauth.account.context_processors.account', 
       'allauth.socialaccount.context_processors.socialaccount', 
       "django.contrib.auth.context_processors.auth", 
       "django.core.context_processors.debug", 
       "django.core.context_processors.i18n", 
       "django.core.context_processors.media", 
       "django.core.context_processors.static", 
       "django.core.context_processors.tz", 
       "django.core.context_processors.request", 
       "moolak.context_processors.image", 
      ], 
     }, 
    }, 
] 


AUTHENTICATION_BACKENDS = (
    # Needed to login by username in Django admin, regardless of `allauth` 
    'django.contrib.auth.backends.ModelBackend', 

    # `allauth` specific authentication methods, such as login by e-mail 
    'allauth.account.auth_backends.AuthenticationBackend', 
) 

SOCIALACCOUNT_QUERY_EMAIL = True 

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 

SOCIALACCOUNT_PROVIDERS = \ 
    {'google': 
     {'SCOPE': ['profile', 'email'], 
     'AUTH_PARAMS': {'access_type': 'online'}}} 


SOCIALACCOUNT_PROVIDERS = \ 
    {'facebook': {'SCOPE': ['email', 'public_profile', 'user_friends'], 'AUTH_PARAMS': {'auth_type': 'reauthenticate'}, 'METHOD': 'js_sdk', 'VERSION': 'v2.3'}} 


# newsletter 

NEWSLETTER_DEFAULT_HEADER_SENDER = 'NewsLetter <[email protected]>' 

ho mai usato Django-Alluth, quindi sono novizio, ti prego, aiutami così facile come si può.

+0

è il tuo problema risolto? –

+0

No! non è risolto! – altruistic

+0

hai eseguito il comando pip --freeze? In che cosa è la versione di allauth? –

risposta

42

Questo significa che dovete diverse versioni di Allauth nella tua macchina di sviluppo e nel tuo server. Dovresti assolutamente usare la stessa versione su entrambi i lati.

Nel motivo del problema che si sta verificando sul server, nella versione 0.22 di django-allauth, lo context processors have been replaced by template tags.

Hai solo bisogno di garantire che:

  1. Si esegue almeno Allauth 0.22, che è la versione più recente fin d'ora (pip install django-allauth==0.22)
  2. No Allauth-specifici processori contesto sono elencati nella tua Django impostazioni del progetto. Quindi è necessario rimuovere queste due linee:
# `allauth` specific context processors 
'allauth.account.context_processors.account', 
'allauth.socialaccount.context_processors.socialaccount', 
+2

La rimozione di quelle 2 righe lo ha fatto per me, grazie – ericn

+1

Questa dovrebbe essere la risposta, ha risolto il mio problema – Juanvulcano

+1

La correzione è applicabile anche per 'Nessun modulo denominato context_processors' se allauth è in' INSTALLED_APPS'. – Babu

3

Questo errore indica che il modulo non è stato trovato.

Probabilmente hai solo bisogno di installare il modulo di terze parti chiamato allauth sul tuo server (o aggiungerlo a requirements.txt, se stai usando deploys automatici come su Heroku).

pip install django-allauth 

È possibile eseguire pip freeze a livello locale per vedere quali moduli sono installati.

Per installare una versione specifica di django-allauth, utilizzare:

pip install django-allauth==0.22.0 
+0

Ho installato allauth via pip! – altruistic

+0

django-allauth == 0.22.0 – altruistic

+0

E questa è la versione installata sul server? L'hai installato in un virtualenv o globalmente? Forse il server utilizza un ambiente diverso da quello che pensi, questo potrebbe accadere se è in esecuzione in un virtualenv, su una versione diversa di Python (ad esempio 2 anziché 3) o se il tuo ['PYTHONPATH'] (https: //docs.python. org/2/using/cmdline.html # envvar-PYTHONPATH) è rotto. –

1

Aveva problema con allauth 0.22.0, installare allauth 0.20.0

pip install django-allauth==0.20.0 
+1

Trovo un po 'strano che tu abbia aggiunto questa risposta da solo, dato che era già nella mia risposta, così come nei commenti :) Anche la risposta di Julen è molto buona, dal momento che aggiunge un po' di background. –