Итак, я получил django-компрессор, работающий в разработке с Debug = False. Однако, как только я установил Debug = True, кажется, что django-компрессор генерирует правильные URL-адреса, файлы и все остальное, но сам Django возвращает 404 для этих файлов.
у меня есть
STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")
и внутри папки static_media в моем проекте я действительно вижу файл CACHE / css / bfdeac875f7a.css, созданный компрессором.
Внутри сгенерированного HTML-файла я также вижу
<link rel="stylesheet" href="/static/CACHE/css/bfdeac875f7a.css" type="text/css" />
но когда страница загружается, сервер запуска говорит:
[21/Dec/2012 22:28:44] "GET /static/CACHE/css/bfdeac875f7a.css HTTP/1.1" 404 276
Я что-то упускаю? я уже
'django.core.context_processors.static',
в TEMPLATE_CONTEXT_PROCESSORS
'compressor.finders.CompressorFinder',
в STATICFILES_FINDERS
'compressor',
в INSTALLED_APPS
Спасибо!
Привет,
Нам понадобится немного больше информации о вашей настройке, чтобы помочь вам:
Спасибо
Привет,
Я использую Django 1.4.3 со следующими настройками:
...
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(PROJECT_DIR, "static"),
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_PRECOMPILERS = (
('text/coffeescript', 'coffee --compile --stdio'),
('text/x-scss', 'sass --scss {infile} {outfile}'),
)
...
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
...
'compressor',
...
)
...
Файлы, которые я вручную помещаю в static_media
, также недоступны по URL-адресу /static/
, поэтому я, должно быть, неправильно настроил статические файлы ... Я также перешел с Django 1.3, если это имеет значение. Не могли бы вы догадаться, что мне следует попробовать?
Кроме того, runserver успешно извлекает файлы из моей папки static_media
когда Debug имеет значение true, но терпит неудачу, когда оно false ...
Извините, не могу поверить, что пропустил это раньше: я как-то читал, что у вас проблемы, когда DEBUG _True_.
В любом случае. Если DEBUG = False, ваш сервер выполнения по умолчанию откажется обслуживать статические файлы из-за проблем с производительностью и безопасностью. Это сделано для того, чтобы вы не могли использовать это в производственной среде. Чтобы иметь возможность правильно тестировать свои статические файлы локально, когда DEBUG имеет значение False, вам необходимо передать флаг --insecure на сервер запуска, как описано здесь: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -admin-option --- небезопасно
Это решит вашу проблему?
О боже, как же плохо. Я случайно переключил "True" и "False" в моем первоначальном вопросе, извините за путаницу!
И большое спасибо, что проблема решена!
Самый полезный комментарий
Извините, не могу поверить, что пропустил это раньше: я как-то читал, что у вас проблемы, когда DEBUG _True_.
В любом случае. Если DEBUG = False, ваш сервер выполнения по умолчанию откажется обслуживать статические файлы из-за проблем с производительностью и безопасностью. Это сделано для того, чтобы вы не могли использовать это в производственной среде. Чтобы иметь возможность правильно тестировать свои статические файлы локально, когда DEBUG имеет значение False, вам необходимо передать флаг --insecure на сервер запуска, как описано здесь: https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -admin-option --- небезопасно
Это решит вашу проблему?