2011-03-02 35 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,所以我沒有訪問權限,但他向我保證,我不必擔心未來的差異。 –

相關問題