Обслуживание статических файлов для режима разработки в Django - PullRequest
3 голосов
/ 09 апреля 2011

У меня проблемы с обслуживанием статических файлов в режиме разработки в 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 ...

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Это не работает, потому что то, что я пытался сделать, было не очень мудрым.

Вот как это должно быть настроено. settings.py

MEDIA_URL = '/media/'
STATIC_URL = '/static/'

MEDIA_ROOT = 'media.mydomain.com'
STATIC_ROOT = 'static.mydomain.com'

STATIC_DIRS = (
    os.path.join(os.path.abspath(os.path.dirname(__file__) + '/..'), 'static'),
)

Все файлы остаются на месте, именно там, где они были.

0 голосов
/ 09 апреля 2011

У меня была похожая проблема, добавление явной ссылки на расположение медиа в моем urlconf в соответствии с this устранило проблему для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...