2010-01-13 62 views
2

我试图用mod_python将我的Django应用程序部署到基于Apache2的服务器上。我已经正确设置了处理程序并进行了配置,以使mod_python与我的项目一起工作。我的项目实现自定义身份验证后端连接我的用户Twitter和我的后端实现是:在Apache上没有识别出Django自定义验证后端

myproject 
|- backends/ 

directory.Everything似乎是工作的罚款,我的网页加载,我可以正常读/写操作。但每当我试图用我的Twitter帐户登录,应用程序触发一个例外告诉我:

错误导入认证后端backends.twitteroauth:“无模块命名backends.twitteroauth”

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

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

问题是什么?

+0

这与gunicorn也是一个问题。 – 2012-07-25 08:52:37

回答

2

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

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

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

2

问题是,python无法找到模块twitteroauthTwitterBackend是什么文件的名称?还要确保backends中有一个__init__.py文件将其标记为一个包。

编辑:

如果你运行shell

python manage.py shell 

,并尝试那里汇入发生什么呢?

from myproject.backends.twitteroauth import TwitterBackend 

因为其他工作正常,我猜myproject是在你的python路径。

+0

TwitterBackend是一个类,文件是twitteroauth。我在目录中有__init__.py。 – 2010-01-13 16:15:26

+0

'init.py'或'__init __。py'? – 2010-01-13 16:48:46

1

确保后端位于python路径中,并且该文件夹中有一个init.py文​​件。