Некоторые статические файлы в django обслуживают 404, когда другие нет - есть идеи, почему?

Использование джанго 1.5

Я получил статические файлы, настроенные следующим образом:

STATIC_ROOT = '/home/<user>/Projects/<name>/static'
STATIC_URL = '/static/'

я просто запускаю manage.py collectstatic

список каталогов:

static/css
static/css/bootstrap.css
static/css/addressbook.css
static/css/bootstrap-responsive.css
static/css/rewrite.css
static/css/login.css

когда я набираю localhost:8000/static/css/addressbook.css, я получаю 404

но:

локальный: 8000/статический/CSS/bootstrap.css

дает мне правильный CSS-контент

ВТФ? они находятся в одной папке и имеют одинаковых пользователей/права/группы

часть из выходных данных сервера запуска menage.py:

[24/Jul/2013 12:18:19] "GET /static/css/addressbook.css HTTP/1.1" 404 1663
[24/Jul/2013 12:19:16] "GET /static/css/login.css HTTP/1.1" 200 533
[24/Jul/2013 12:20:12] "GET /static/css/addressbook.css HTTP/1.1" 404 1663
[24/Jul/2013 12:32:51] "GET /static/css/bootstrap.css HTTP/1.1" 304 0

ОБНОВЛЕНИЕ:

Он обслуживает файлы не из «проекта / статического», а из статической папки в папке приложения. Я понял это, удалив статический фордер в одном приложении - файлы начинают выдавать 404. То же самое, если я отключу AppDirectoriesFinder. Но это по-прежнему непоследовательно, некоторые приложения не обслуживают файлы даже из «статических» папок приложений.

Моя идеальная ситуация будет такой: AppDirectoriesFinder закомментирован и все файлы обслуживаются из myProject/static/


person Lord_JABA    schedule 24.07.2013    source источник
comment
Вы проверяли права доступа к файлу .css?   -  person arturex    schedule 24.07.2013
comment
Каково значение параметра DEBUG?   -  person Dominic Rodger    schedule 24.07.2013
comment
я проверил разрешения, DEBUG True   -  person Lord_JABA    schedule 24.07.2013


Ответы (2)


У меня такая же проблема. Вот мое решение:

Добавьте это в свой settings.py

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    #"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
) 
person T. Christiansen    schedule 22.01.2014
comment
могу я спросить, в чем причина проблемы? не могли бы вы немного описать это? (мне тоже помогло) - person azalut; 26.11.2014

Вы не можете просто поместить файлы в папку /static вашего проекта. Django не видит файлы в этом каталоге, если они не были собраны из приложений через collectstatic. Вы получите ошибку 404 при попытке доступа к файлам, которые вы добавили туда вручную.

Вам нужно поместить статические файлы в каталог /static приложения (если он не принадлежит конкретному приложению, просто создайте новый, например основной или веб-сайт).

В качестве альтернативы вы можете настроить STATICFILES_DIRS для поиска Django в дополнительных каталогах при вызове collectstatic.

person aris    schedule 29.01.2019