2015-06-16 4 views
2

Мой локальный сервер тестирования для Django v1.8.2 в Windows 8.1 обслуживает только определенные статические файлы. Другие дают ошибку 404.Django runerver не обслуживает некоторые статические файлы

#urls.py - excerpt 
urlpatterns = [ 
    url(r'^$', views.index) 
] + staticfiles_urlpatterns() 

#settings.py - excerpt 
INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'main', 
    'users' 
) 

STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, "static/") 

Насколько я могу судить, сервер разработки настроен на обслуживание статических файлов. При запуске runserver я не получаю никаких предупреждений, а в моем коде не отображаются синтаксические ошибки (import заявления существуют и т. Д.). Я сделал для тестирования запуск collectstatic перед запуском сервера, чтобы быть уверенным хотя бы один раз.

Мой шаблон мнение:

{% load staticfiles %} 
<img src="{% static 'main/img/ComingSoon.jpg' %}" alt="Coming Soon"> 

Ссылка генерируемый /static/main/img/ComingSoon.jpg который выглядит правильно, файл не существует в этом месте. Что меня озадачивает, так это то, что этот каталог создает ошибку 404, но другие статические файлы обслуживаются. Иерархия каталогов является:

static/ 
    admin/ 
    css/ 
     .. 
    js/ 
     .. 
    img/ 
     .. 
    main/ 
    img/ 
     ComingSoon.jpg 

URL localhost:8000/static/admin/img/ дает ожидаемое сообщение об индексах время не допускается. Однако localhost:8000/static/main/img/ сообщает \main\img\ не может быть найден. Оба статуса: 404. Изображения в пределах static/admin/img/ действительно отображаются с теми же ссылками, что и сообщение об ошибке. Сайт администрирования для Django отображается корректно.

Почему один каталог в пределах static/ не индексируется и не доступен?

ответ

2

Согласно Django documentation о static/:

Это должен быть изначально пустой каталог назначения для сбора статические файлы из их постоянных мест в один каталог для простоты развертывания; это не место для хранения ваших статических файлов навсегда. Вы должны сделать это в каталогах, которые будут найдены с помощью статических искателей, которые по умолчанию являются подкатегориями «статические /» и любыми каталогами, которые вы включаете в STATICFILES_DIRS).

я переехал файлы в другой каталог, например:

myApp/ 
    main/ 
    static/ 
     main/ 
     img/ 
      .. 
    static/ 
    .. 

После запуска collectstatic я заметил, что сценарий создал подкаталоги в myApp/static/, как и ожидалось, и это должно быть сгенерированы URL, необходимо, потому что теперь он правильно обслуживает файлы.