2015-07-27 21 views
9

Chcę użyć Django-Allauth, więc zainstalowałem go w następujący sposób i działa idealnie w moim laptopie localhost; ale kiedy wyciągnąć go na moim serwerze, spotykam z powodu następującego błędu:Brak modułu o nazwie "allauth.account.context_processors"

No module named 'allauth.account.context_processors' 

Co należy zrobić?

# 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]>' 

Nigdy nie używałam Django-Alluth, więc jestem nowicjuszem, pomóż mi tak łatwo jak możesz.

+0

Czy Twój problem został rozwiązany? –

+0

Nie! to nie jest rozwiązane! – altruistic

+0

uruchomiłeś polecenie pip --freeze? W jakiej wersji jest allauth? –

Odpowiedz

42

Oznacza to, że mają różne wersje Allauth w twoim urządzeniu i na twoim serwerze. Powinieneś zdecydowanie użyć tej samej wersji po obu stronach.

Do przyczyny problemu, który trafiasz na serwer, w wersji 0.22 django-allauth, context processors have been replaced by template tags.

Musisz tylko upewnić się, że:

  1. Używasz przynajmniej Allauth 0.22, który jest najnowsza wersja już teraz (pip install django-allauth==0.22)
  2. Nie Allauth specyficzne procesory kontekście są wymienione w Django ustawienia projektu. Więc trzeba usunąć te dwie linie:
# `allauth` specific context processors 
'allauth.account.context_processors.account', 
'allauth.socialaccount.context_processors.socialaccount', 
+2

Usunięcie tych 2 wierszy zrobiło to za mnie, dzięki – ericn

+1

To powinno definitywnie być odpowiedzią, rozwiązało mój problem – Juanvulcano

+1

Poprawka dotyczy również "Brak modułu o nazwie context_processors', jeśli allauth jest w' INSTALLED_APPS'. – Babu

3

Ten błąd oznacza, że ​​modułu nie można znaleźć.

Najprawdopodobniej wystarczy zainstalować na serwerze moduł zewnętrzny o nazwie allauth (lub dodać go do pliku requirements.txt, jeśli używasz automatycznych wdrożeń, takich jak na Heroku).

pip install django-allauth 

można uruchomić pip freeze lokalnie, aby zobaczyć, jakie moduły są zainstalowane.

Aby zainstalować konkretną wersję django-allauth, użyj:

pip install django-allauth==0.22.0 
+0

mam zainstalowanego allauth poprzez pip! – altruistic

+0

django-allauth == 0.22.0 – altruistic

+0

A to jest wersja, którą zainstalowałeś na serwerze? Czy zainstalowałeś go w virtualenv lub globalnie? Może serwer używa innego środowiska niż myślisz, to może się zdarzyć, jeśli jest uruchomiony w virtualenv, w innej wersji Pythona (np 2 zamiast 3) lub jeśli twój [ 'PYTHONPATH'] (https: //docs.python. org/2/using/cmdline.html # envvar-PYTHONPATH) jest uszkodzony. –

1

Miał problem z allauth 0.22.0 zainstalować allauth 0.20.0

pip install django-allauth==0.20.0 
+1

To trochę zabawne, że dodałeś tę odpowiedź samemu, ponieważ była już w mojej odpowiedzi, a także w komentarzach :) Odpowiedź Julena jest również bardzo dobra, ponieważ dodaje trochę tła. –