我正在開發由許多應用程序組成的Django(1.3)項目。每個應用程序在其自己的static
目錄下都有自己的靜態文件。此外,我添加了一個名爲project_static
的目錄,該目錄應包含在各種應用程序(如jQuery)中通用的靜態文件。在Django中管理多個應用程序的靜態文件
我馬上碰到的問題是命名衝突。默認情況下,collectstatic
只會將全部內容放在全局的static
目錄下,而不會按應用程序對其進行分類。這對我不起作用,因爲每個應用程序都有 - 例如 - 一個名爲css/screen.css
的文件。
我解決它是由STATICFILES_FINDERS
去除django.contrib.staticfiles.finders.AppDirectoriesFinder
和使用namespaced static files dirs的方式,所以我的設置,現在看起來像
STATICFILES_DIRS = (
os.path.join(PROJECT_PATH, 'project_static'),
('my_app', os.path.join(PROJECT_PATH, 'my_app', 'static')),
('another_app', os.path.join(PROJECT_PATH, 'another_app', 'static')),
...
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
)
的問題是,這種方式我失去了靜態文件的所有其他應用,實例django.contrib.admin
。當然,我可以手動添加管理員,但我不知道如何在不破壞具有不同目錄結構的管理員的情況下執行此操作。
有更好的方法來管理多個應用程序的靜態文件嗎?
如果我們使用nginx提供靜態文件,這仍然是首選方法嗎? (保持靜態文件,模板在應用程序本身) – Dineshkumar
是的。您希望您的項目管理所有資產。 –