Я разрабатываю проект Django (1.3), составленный многими приложениями. Каждое приложение имеет свои собственные статические файлы в своем собственном каталоге static
. Кроме того, я добавил каталог под названием project_static
, который должен содержать статические файлы, которые являются общими для различных приложений, таких как jQuery.
Проблема, с которой я немедленно сталкиваюсь, - это именование коллизий. По умолчанию collectstatic
будет просто помещать все в глобальный каталог static
, не классифицируя их по приложению. Это не работает для меня, так как каждое приложение имеет, например, файл с именем css/screen.css
.
Как я решил это, удалив django.contrib.staticfiles.finders.AppDirectoriesFinder
из STATICFILES_FINDERS
и используя 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
. Конечно, я мог бы вручную добавить администратора, но я не уверен, как это сделать, не нарушая администратора, который имеет другую структуру каталогов.
Есть ли лучший способ управлять статическими файлами с несколькими приложениями?