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