2017-03-23 71 views
2

我使用django startapp api創建了一個名爲API的應用程序。然後我在settings.py(app/settings.py)加載該應用從我的主要應用程序(app):Django - INSTALLED_APPS子模塊

INSTALLED_APPS = [ 
    ... 
    'api.apps.ApiConfig', 
    ... 
] 

這個偉大的工程!然後,我在api文件夾中創建了一個settings.py文件(api/settings.py)。我想從這個子模塊中加載一個名爲rest_framework的模塊(由於可重用性)。所以api/settings.py文件包含以下內容:

INSTALLED_APPS = [ 
    'rest_framework' 
] 

rest_framework模塊,但是,是不是當我運行的應用程序加載。我發現下面的解決方法(對於app/settings.py):

from api.settings import INSTALLED_APPS as API_APPS 
INSTALLED_APPS += API_APPS 

我覺得這不是在所有子模塊的主應用程序加載INSTALLED_APPS的最佳途徑。有沒有更好的方法加載所有子模塊INSTALLED_APPS

+0

2個應用應該完全相互獨立。看起來你在混合依賴關係,這可能不是你想要的。 –

+0

準確。這就是爲什麼我問:-)。 'api'應用程序依賴於'rest_framework',主應用程序('app')依賴於'api'應用程序。那麼我怎樣才能確保我不需要在'app'的'settings.py'中加載'api'依賴? –

+4

你應該以一種明確表示需要在其INSTALLED_APPS中添加''api.apps.ApiConfig''(可怕的CamelCase)和''rest_framework''的方式記錄你的'api'應用。有很多可重複使用的應用程序和框架,需要將多個應用程序添加到INSTALLED_APPS才能正常工作。 – schwobaseggl

回答

0

每個應用程序設置的好地方在AppConfig類中。默認的應用程序配置可以有合理的默認值,並且可以通過子類化默認的應用程序配置來定製它們。大多數Django應用程序沒有settings.py,所以如果您添加app/settings.py,對於其他Django開發人員來說,這看起來很不尋常。

就個人而言,我會避免嘗試在你的應用程序配置(或應用程序/ settings.py)中做聰明的事情。不太清楚在查看項目的設置文件時安裝了哪些應用程序,並可能引入細微的錯誤。

Django調試工具欄是一個非常受歡迎的Django應用程序,由Django核心開發人員提供,removed automatic setup在1.6中有很多貢獻,因爲它是'有問題的'。