Django自定义身份验证后端在Apache上无法识别

时间:2010-01-13 11:59:15

标签: python django mod-python

我正在尝试使用mod_python将我的Django应用程序部署到基于Apache2的服务器上。我已经设置好处理程序并进行配置以使mod_python与我的项目一起工作。我的项目实现了一个自定义身份验证后端,将我的用户连接到twitter,我的后端实现已经开启:

myproject
|- backends/

directory.Everything似乎工作正常,我的页面加载,我可以正确地进行读/写操作。但每当我尝试使用我的Twitter帐户登录时,应用程序都会触发一个异常告诉我:

导入身份验证后端后端错误.twitteroauth:“没有名为backends.twitteroauth的模块”

在我的settings.py中,我正在注册我的后端

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

有什么问题?

3 个答案:

答案 0 :(得分:2)

问题是python找不到模块twitteroauth。文件TwitterBackend的名称是什么?另外,请确保__init__.py中有backends个文件将其标记为包。

修改

如果你运行shell

会发生什么
python manage.py shell

并尝试将其导入?

from myproject.backends.twitteroauth import TwitterBackend

正如其他任何工作正常,我猜myproject在你的python路径中。

答案 1 :(得分:2)

删除数据库解决了我的问题。据我所知,如果用户被记录,他的相应登录后端将作为会话变量保存在数据库中。我的settings.py文件是

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

在我做出更正之前。更改settings.py并重新启动应用程序是不够的。您还必须从db中删除与会话相关的记录。

答案 2 :(得分:1)

确保后端位于python路径上,文件夹中有 init .py文件。