Сервер разработки Django ВСЕ ЕЩЕ не будет обслуживать статические файлы
Ладно все. Я знаю, что это вопрос, который многие люди решали в разных случаях, но я не могу на всю жизнь заставить свой сервер разработки Django 1.9 обслуживать статический контент на моем локальном компьютере. Статические файлы отлично работали перед развертыванием, и вполне подходят для моего сервера развертывания, но теперь в моей тестовой среде (локальный компьютер с runserver
собирается) все сломано, и мне действительно нужно иметь возможность тестировать таблицы стилей в среде разработчика.
Я испробовал все эти решения и многое другое, следуя руководству по документации, использовал collectstatic
снова в репо разработки... ничего не сработало, и я в своем уме.
В настоящее время у меня есть DEBUG = True
и следующие настройки:
Папка Иерархия
project/
manage.py
(&c)
app/
urls.py
models.py
(&c)
project/
settings.py
urls.py
(&c)
static/
styles/
images/
(&c)
settings.py Настройки статических файлов
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
os.path.join(STATIC_ROOT, 'styles/'),
os.path.join(STATIC_ROOT, 'js/'),
os.path.join(STATIC_ROOT, 'audio/'),
os.path.join(STATIC_ROOT, 'images/'),
os.path.join(STATIC_ROOT, 'admin/'),
os.path.join(STATIC_ROOT, 'documents/'),
)
urls.py Шаблоны URL
from django.conf.urls import include, url, patterns
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
urlpatterns = [
# ... project url patterns blah blah ...
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += patterns('', (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT, 'show_indexes': True}))
у меня тоже есть {% load staticfiles %}
в моих шаблонах вместе с соответствующими {% static %}
звонки (например: {% static 'styles/main.css' %}
).
Для справки, командная строка дает мне следующее при загрузке страницы:
"GET /static/styles/main.css HTTP/1.1" 404 1759
Если кто-нибудь знает о том, что я пропустил исправление, которое может даже привести к тому, что снежный ком может сработать, сообщите мне. Это сводит меня с ума, потому что я не могу проверить должным образом.
РЕДАКТИРОВАТЬ: Как предложено, я обновился до Django 1.11 на моем локальном компьютере, без изменений в текущей проблеме.
2 ответа
Можете ли вы попытаться создать переменную STATIC_ROOT с абсолютным путем и проверить, работает ли она?
Может быть, конструкция этого вар не в порядке.
Вы также можете проверить переменную STATIC_ROOT через
python manage.py shell
и посмотрите, правильно ли он подходит к вашему пути.
Я не могу проверить это, но, возможно, попробуйте изменить это:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
к этому:
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Кстати, версия 1.9 не поддерживается, а также представляет угрозу безопасности. Возможно, вы захотите перейти на другую версию.