我正在开发由许多应用程序组成的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
是的。您希望您的项目管理所有资产。 –