У меня проблемы с обслуживанием статических файлов в режиме разработки в Django. Я знаю, что это не тот параметр, который следует использовать на рабочем сервере, так что не волнуйтесь. Однако сейчас я хотел бы придерживаться этого.
Соответствующие части settings.py
:
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__) + '/..'), 'media')
STATIC_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__) + '/..'), 'static')
А urls.py
:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Таким образом, статические файлы на данный момент находятся в каталоге с именем static
прямо в папке проекта. Я проверил, что STATIC_ROOT
оценивается в соответствующее значение. Я дважды проверил, что папка существует.
Однако, когда мой браузер указывает на адрес localhost:8000/static/js/somefile.js
, я получаю ужас 404 Page Not Found
с сообщением 'js/somefile.js' could not be found.
. Не могли бы вы предложить несколько причин такого поведения?
Заранее спасибо.
EDIT:
Мне кажется, я знаю, в чем может быть проблема: Дело в том, что в режиме разработки Django пытается искать файлы из STATIC_URL
в подкаталогах static/
всех установленных приложений. Однако я добавил некоторые дополнительные файлы к своему STATIC_ROOT
, и они не обслуживаются вообще. Может быть, есть какое-то столкновение.
РЕДАКТИРОВАТЬ (2):
Это должно быть так. Когда я запускаю сервер с ./manage.py runserver --nostatic
, он работает, то есть фактически обслуживает файлы из каталога STATIC_ROOT
. Что я могу с этим поделать? Проблема в том, что, пытаясь сохранить все мои файлы шаблонов отдельно от самого проекта, я пытаюсь сделать то же самое с некоторыми файлами css и js ...