2011-02-27 75 views
5

我正在運行Satchmo。有很多應用程序,我更改了產品應用程序中的一些源代碼。如何正確覆蓋Django中的應用程序?

所以我的問題是我怎樣才能正確地覆蓋這一點,因爲這種變化是特定於網站的。我是否需要複製整個Satchmo框架並將其放入我的項目中,或者我可以將其中一個應用程序複製並放入說Satchmo> App> Products? (還挺喜歡的模板)

感謝

回答

4

我所做的工作是複製我已更改的應用程序。在這種情況下,satchmo \ apps \ product。 我複製應用到我的項目文件夾 修改了我的setting.pyINSTALLED_APPS'product','myproject.product',

這就是現在進行我已經到這個程序只爲該項目所做的更改並離開原來的產品應用與不變仍然可以從其他項目正常閱讀。

2

通常情況下,我會說最好的辦法是到餐桌的Satchmo並保留副本更改。

如果您願意使用python路徑,請確保您的應用程序目錄出現在另一個(默認)目錄之前。從我的測試中,如果您有兩個名稱相同的應用程序/模塊,則會使用找到的第一個應用程序/模塊。

+0

heya。這是一個網站的具體變化,所以我不想叉satchmo,並將其放在路徑上,因爲我不希望任何其他項目使用此。 – darren 2011-02-27 21:12:30

+0

然後是第二個選項。所有你需要做的就是調整python路徑(按照Chris的說明),並確保你的「產品」在標準satchmo的產品(我認爲是通過pip/easy_setup安裝)之前。 – 2011-02-28 18:05:37

+0

另外(我不能讓它做段落),你可以用virtualenv隔離你的網站。然後,只有您的網站才能訪問修改後的satchmo副本... – 2011-02-28 18:07:48

3

當您在settings.py文件中向INSTALLED_APPS添加'Django App'時,您告訴Django在您的「python路徑」中存在具有該名稱的可導入python模塊。您可以通過查看存儲在sys.path處的列表內容來查看您的Python路徑。

每當的Python(在這種情況下的Django)嘗試將其導入檢查每個在sys.path列出的目錄的模塊中的順序,當它找到一個匹配模塊停止給定名稱。

解決您的問題,那麼就是太把你定製的Django應用程序,例如,在的Satchmo product模塊,爲你的Python路徑中的位置,這將「真正」的Satchmo product模塊之前檢查

因爲我不知道你是如何目錄結構奠定了我基本上做一個猜測在這裏,但你的情況,這聽起來像你擁有的Satchmo應用程式生活像/satchmo/apps/和你在/my_custom_path/my_project/項目的地方。在這種情況下,您可能需要將自定義的product模塊添加到/my_custom_path/my_project/product/。由於Django settings.py文件所在的路徑總是首先檢查第一個,這應該意味着您的定製product模塊將被首先找到並導入,而不是內置的Satchmo模塊。

FYI:要檢查,看看在你的Satchmo安裝檢查目錄中運行的模塊和python manage.py shell然後在提示符下執行import sys; print sys.path的順序。

+0

Hiya Chris。但是如果我不希望其他應用程序使用此自定義產品應用程序呢?他們仍然會首先導入本產品,因爲它首先在路徑上找到。我只想覆蓋該網站的應用程序。 – darren 2011-02-28 09:12:31

+1

也許如果你解釋你的目錄結構的佈局,我將能夠提供幫助。到目前爲止,我還不清楚你的應用程序,庫和項目是如何佈置的。 – 2011-02-28 18:49:50

相關問題