2012-06-06 12 views
11

dostaję ImportError "No module named django.contrib.auth" zarówno gdy próbuję użyć funkcji django.shortcutsredirect i gdy próbuję użyć:nr moduł o nazwie django.contrib.auth podczas korzystania z rzeczy, które przekierowują

(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}), 

I rysunek nie może być zbiegiem okoliczności, że jedynym miejscem, w którym trafiam ten błąd, jest miejsce przekierowania strony, ale może tak jest. Wiem, że użytkownik nie jest faktycznie wylogowywany, więc błąd występuje, zanim dojdziesz do jakiegokolwiek kodu przekierowania.

Poniżej znajduje się mój plik urls.py.

+0

Jaka jest pełna konfiguracja adresu URL? Czy masz zdefiniowany [prefiks widoku] (https://docs.djangoproject.com/en/dev/topics/http/urls/#the-view-prefix)? – Alasdair

Odpowiedz

28

Mieszacie prefiksy adresów URL w swoim urlpatterns.

urlpatterns = patterns('karma.views', 
    (r'^$', 'homepage'), 
    (r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}), 
    (r"^opportunities/nearby$", 'draw_map'), 
) 

Django próbuje znaleźć poglądy w stosunku do danego adresu URL prefiksu, w Twoim przypadku 'karma.views'. Wewnątrz tego modułu nie ma 'django.contrib.auth.views.logout', dlatego otrzymujesz ImportError.

Przesuń URL wylogowania do drugiego bloku, np .:

urlpatterns += patterns('', 
    (r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}), 
) 

To powinno rozwiązać problem.

+0

Próbowałem tego i problem nadal występuje. – Jason

+0

Zaktualizowałam mój wpis. – Jason

+0

Zaktualizowałem moją odpowiedź, mam nadzieję, że pomaga ... – cfedermann

Powiązane problemy