2011-03-02 38 views
1

所以我创建了我的网站,它使用django-registration-0.8,但托管它的服务器使用0.7安装的服务器范围。我无法获取模块如何查找,因此我尝试下载0.8源代码并放置注册/文件夹,并将其注册到settings.py(INSTALLED_APPS)中作为注册。如何在Django中指定自定义注册应用程序而不是已安装的应用程序?

现在自定义注册应用程序(0.8)被django看到。但是,试图访问寄存器页的时候,我得到这个错误:

ImportError at /accounts/register/ 
No module named backends.default.urls 

被称为在urls.py为:

(r'^accounts/', include('registration.backends.default.urls')), 

如果我将其更改为

(r'^accounts/', include('registration.urls')), 

的错误消失了,但这意味着它使用已安装的(0.7)版本。该版本的其中一个问题是激活页面不同。

检查注册应用程序文件夹我可以看到该模块存在,在注册/后端/默认/网址。所以我的结论是,服务器范围内安装的注册表(0.7)是我手动从源代码提取的注册表(0.8)之前首先查看的注册表。

所以我的问题是我如何让Django查找我安装的应用程序的0.8版本,而不是安装在服务器范围内的那个版本?我没有访问shell(使用djangofoo托管),只有manage.py和ftp。

回答

0

您能确认发现的版本吗?如果没有直接的shell访问权限,您可能会创建一个管理命令来输出registration.get_version()方法。

您可以尝试使用sys.path.insert(0,[path])将自定义注册应用程序所在的目录添加到pythonpath的前面。

您也可以尝试重命名自定义注册应用程序(registration2?)以确保您在pythonpath中看到它并导入正确的应用程序。

+0

我确实设法尝试过你的第三个选项,只是为了看看自定义应用程序是否被选中,而且是;直到它在代码中遇到对'注册'的引用,在这种情况下,它会再次检查系统范围的版本,并在此过程中抛出异常。顺便说一下,我的托管服务提供商为我解决了这个问题,在检查系统范围的安装包之前,先编辑我的WSGI文件以检查安装在我的站点上的应用程序。我搜索了一下,wsgi文件似乎被连接到Apache,所以我没有访问权限,但他向我保证,我不必担心未来的差异。 –

相关问题