Я пытаюсь скомпилировать статический файл с django-pipeline, но не могу обслуживать статические в dev режиме. Поскольку я не разработчик Django, я могу ошибаться, когда Django обслуживает статические файлы. Вот моя структура проекта:Django-pipe не обслуживает файлы в режиме разработки
- проект (сам проект)
- проекта (настройки, глобальные адреса конфигурации и т.д.)
- приложение (основной и единственное приложение)
- статические (основанные на приложении статические файлы, именуемые через имя приложения Папка)
- статический (общий статический, который не связан с конкретным приложением)
- CSS
- app.styl
- CSS
- общественного
- media
- статический (не используется в dev env; только для производства: должно быть подано с Nginx, генерируется автоматически с помощью collectstatic)
Как я использую общий статический, я указал STATICFILES_DIRS
директиву, чтобы позволить Django DEV сервер и collectstatic
команда, чтобы найти общий статический:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
Вот мой settings.py
:
# for production, should be served via nginx
STATIC_ROOT= os.path.join(BASE_DIR, 'public/static/')
# prefix for static app
STATIC_URL = '/static/'
# also django-pipeline config
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'pipeline.finders.PipelineFinder',
)
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE = {
'PIPELINE_ENABLED': True,
'COMPILERS': (
'pipeline.compilers.stylus.StylusCompiler',
),
'STYLESHEETS': {
'app': {
'source_filenames': (
'css/app.styl',
),
'output_filename': 'css/app.css',
},
},
}
В моем шаблоне я указал CSS-группа:
{% load pipeline %}
{% stylesheet 'app' %}
</head>
В результате такой HTML генерируется:
<link href="/static/css/app.css" rel="stylesheet" type="text/css" />
</head>
Но /static/css/app.css
возвращает 404.
Если я бегу collectstatic
, public/static/css/app.css
встроен. Но поскольку я понимаю логику Django, она используется только для производства apache/nginx, а не в dev. В режиме dev режим статический подается через внутренний сервер Django с некоторыми промежуточными связями django-конвейера.
Что я делаю неправильно? Любая помощь приветствуется, спасибо.
UPD: Я добавил + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
к глобальным urlpatterns, однако, не может понять, что именно поэтому рекомендуется - STATIC_ROOT используется только для производства с внешним прокси-сервера, а не с самого Джанго. Или нет?
Если я устанавливаю 'PIPELINE_ENABLED ': False,' Django собирает статические автоматически каждый раз, когда я нахожу HTTP-запрос в dev-mode. Это нормально? – f1nn