Трубопровод Джанго не загружает активы
Я следовал этому руководству, чтобы сделать пример проекта. Структура файлов:
- mysite
- mysite
- __init__.py
- settings.py
- urls.py
- wsgi.py
- polls
- migrations
- templates
- polls.html
- static
- script.js
- style.css
- admin.py
- models.py
- tests.py
- urls.py
- views.py
- manage.py
Все работает хорошо, но проблема заключается в использовании Django-pipe для управления активами. Я настроил свой проект так же, как показано ниже, но он не загружает ресурсы должным образом.
settings.py
INSTALLED_APPS = (
.
.
'django.contrib.staticfiles',
'pipeline',
'polls',
)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
PIPELINE_ENABLED = True
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_CSS_COMPRESSOR = 'pipeline.compressors.cssmin.CSSMinCompressor'
PIPELINE_CSSMIN_BINARY = 'cssmin'
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.slimit.SlimItCompressor'
PIPELINE_CSS = {
'pollsX': {
'source_filenames': (
'style.css',
),
'output_filename': 'styles1.css',
'variant': 'datauri',
},
}
PIPELINE_JS = {
'pollsX': {
'source_filenames': (
'script.js',
),
'output_filename': 'scripts1.js',
}
}
polls.html
{% load compressed %}
{% compressed_css 'pollsX' %}
<div class='red-me'>
<h1> Hi! I'm a templ! </h1>
</div>
style.css
.red-me {
color: red;
}
Сгенерированный вывод для http://127.0.0.1/polls
является
<link href="/static/styles1.css" rel="stylesheet" type="text/css" />
<div class='red-me'>
<h1> Hi! I'm a templ! </h1>
</div>
Не может загрузить /static/styles1.css
файл в браузере. Даже я проверял ./manage.py collectstatic
без успеха. Я что-то пропустил?
Python-3.4 и Django-1.7
2 ответа
Django pipline обновляется очень часто, поэтому ваши учебники уже устарели. Но я все равно хочу ответить на ваш вопрос, потому что я потратил пару часов на то, чтобы исправить эту проблему с помощью нового конвейера, и хочу поделиться своим решением и надеюсь, что оно кому-нибудь пригодится.
Все работает для:
- Джанго ==1.9.1
- Джанго-конвейерный == 1.6.4
settings.py
INSTALLED_APPS = (
.
.
'django.contrib.staticfiles',
'pipeline',
'polls',
)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'pipeline.finders.PipelineFinder',
)
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE = {
'CSS_COMPRESSOR': 'pipeline.compressors.cssmin.CSSMinCompressor',
'CSSMIN_BINARY': 'cssmin',
'JS_COMPRESSOR': 'pipeline.compressors.slimit.SlimItCompressor',
'STYLESHEETS': {
'pollsX': {
'source_filenames': (
'style.css',
),
'output_filename': 'css/styles1.css',
'variant': 'datauri',
},
},
'JAVASCRIPT': {
'pollsX': {
'source_filenames': (
'script.js',
),
'output_filename': 'js/scripts1.js',
},
}
}
polls.html
{% load pipeline %}
{% stylesheet 'pollsX' %}
{% javascript 'pollsX' %}
<div class='red-me'>
<h1> Hi! I'm a templ! </h1>
</div>
Я думаю, что вы неправильно написали имя вашего css файла. Вместо того, чтобы использовать:
<link href="/static/styles1.css" rel="stylesheet" type="text/css" />
Использование:
<link href="/static/style.css" rel="stylesheet" type="text/css" />