我正在开发一个由许多应用程序组成的 Django (1.3) 项目。每个应用程序在其自己的static
目录下都有自己的静态文件。此外,我添加了一个名为的目录,该目录project_static
应包含在各种应用程序(例如 jQuery)中通用的静态文件。
我立即遇到的问题是命名冲突。默认情况下,collectstatic
只会将所有内容放在全局static
目录下,而不按应用程序对其进行分类。这对我不起作用,因为每个应用程序都有 - 例如 - 一个名为css/screen.css
.
我解决它的方法是从命名空间静态文件中删除django.contrib.staticfiles.finders.AppDirectoriesFinder
和STATICFILES_FINDERS
使用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
)的静态文件。当然我可以手动添加管理员,但我不确定如何在不破坏管理员的情况下执行此操作,管理员具有不同的目录结构。
有没有更好的方法来管理具有多个应用程序的静态文件?