2009-08-26 78 views
1

我想知道如果這是一個很好的做法。我通常在「lib」目錄下有可重複使用的django-apps和python lib,它很好用。然後我將「templates」目錄直接放在項目根目錄下,並將lib/django-app/templates中的默認應用程序模板複製到我的項目「templates」目錄中並修改我的佈局更改。Django的可重複使用的應用程序和Django項目結構

現在有時我需要更改/修改有問題的網站重複使用的應用程序的行爲,所以我想根據需要創建我的項目下的一個「新應用」和修改的東西。這樣我可以很好地升級可重複使用的應用程序。

這是很長的路要走?有更好的方法嗎?

謝謝。

回答

3

抓住一個副本,並直接修改可重複使用的應用程序是不是真的去了,在我看來,一個好辦法。這樣,當您的可重用應用程序獲得新功能或其錯誤得到修復時,您無法輕鬆獲取新版本的應用程序。

更好的方式來做到這一點是修改不通過重寫他們,但退出應用完整滿足您的需求部分。讓我們以contrib爲例來介紹Django的評論應用程序。如果評論模型中沒有所有必要的字段,則應該通過創建用於評論的自定義模型來對其進行修改,以繼承原始模型,並以此方式添加必需的特徵。從技術文檔:

from django.contrib.comments.models import Comment 

class CommentWithTitle(Comment): 
    title = models.CharField(max_length=300) 

現在,我已經修改了應用程序的意見,我也可以更新註釋應用程序的源,而不必擔心衝突。你不需要添加一些東西來使用它,它在擺脫某些東西或改變事物時也可以工作。

的意見和模板,這是一個有點壞的做法的直接修改應用程序提供的模板。我更喜歡通過對指定模板的視圖實際具有關鍵字參數來做到這一點。如果我想用我自己的替換默認模板,我可以從url配置中指定新的模板。現在,我不必觸摸視圖來更改模板,並且url配置清楚地表明我正在使用自己的模板,而不是使用默認模板。

+0

感謝您的詳細澄清。你回答了我所有的問題:) – wailer 2009-08-27 10:14:20