Пользовательский аутентификационный бэкэнд Django не распознается на Apache - PullRequest
2 голосов
/ 13 января 2010

Я пытаюсь развернуть свое приложение Django на сервере на основе Apache2 с mod_python. Я правильно настроил обработчики и настроил конфигурацию так, чтобы mod_python работал с моим проектом. В моем проекте реализован пользовательский бэкэнд аутентификации для подключения моих пользователей к твиттеру, и моя бэкэнд-реализация включена:

myproject
|- backends/

directory. Кажется, все работает нормально, мои страницы загружаются, и я могу правильно выполнять операции чтения / записи. Но всякий раз, когда я пытаюсь войти с моей учетной записью Twitter, приложение запускает исключение, сообщающее мне:

Ошибка импорта аутентификации backend backends.twitteroauth: «Ни один модуль не назван backends.twitteroauth»

В моем файле settings.py я регистрирую свой бэкэнд как

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.ModelBackend',
   'myproject.backends.twitteroauth.TwitterBackend',
)

В чем проблема?

Ответы [ 3 ]

2 голосов
/ 13 января 2010

Удаление базы данных решило мою проблему. Насколько я могу догадаться, если пользователь вошел в систему, его соответствующий серверный бэкэнд сохраняется как переменная сеанса в базе данных. Мой файл settings.py был

AUTHENTICATION_BACKENDS = (
   'django.contrib.auth.backends.ModelBackend',
   'backends.twitteroauth.TwitterBackend',
)

, прежде чем я сделал исправление. Изменение settings.py и перезапуск приложения были просто недостаточны. Вы также должны удалить записи, относящиеся к сеансу, из БД.

2 голосов
/ 13 января 2010

Проблема в том, что python не может найти модуль twitteroauth. Как называется файл, в котором находится TwitterBackend? Также убедитесь, что в backends есть файл __init__.py, чтобы пометить его как пакет.

редактирование:

Что произойдет, если вы запустите оболочку

python manage.py shell

и попытаться импортировать его туда?

from myproject.backends.twitteroauth import TwitterBackend

Как и все остальное, работает нормально, я думаю, myproject находится в вашем пути Python.

1 голос
/ 13 января 2010

Убедитесь, что backends находится на пути к Python и имеет в папке файл init .py.

...