Django не может найти мои медиафайлы (на сервере разработки)
средства массовой информации в настоящее время на моей локальной машине разработки.
My MEDIA_ROOT, MEDIA_URL, ADMIN_MEDIA_PREFIX и указаны ниже:
нет папки «admin», но это не должно иметь значения, я не думаю. В urls.py файл у меня:
Я в растерянности относительно того, что я должен сделать, чтобы заставить его работать. [Я пытаюсь изучить django и работаю с существующим проектом, который довольно волосатый]
4 ответов
вы смешиваете и сопоставляете статическую обработку файлов pre и post-Django 1.3. Первоначально все статические файлы обслуживались из MEDIA_URL , но Django 1.3 представил пакет staticfiles contrib и связанный STATIC_ROOT и STATIC_URL настройки. django.views.static.serve использует новое приложение staticfiles, которое вы не настроили.
предполагая, что вы используете Django 1.3, во-первых, вам нужно добавить «staticfiles» в свой INSTALLED_APPS . Затем вам нужно будет определить STATIC_ROOT и STATIC_URL . Стандарт location-это каталог корневого уровня проекта с именем «static».
вам также нужно добавить обработчик контекста шаблона staticfiles:
это STATIC_URL переменная доступна в ваших шаблонах, поэтому вы можете ссылаться на свои ресурсы с помощью чего-то вроде << STATIC_URL >>css/style.css
все ваши статические ресурсы также должны будут перейти в каталог уровня приложения с именем «static». Фактический «статический» каталог корневого уровня проекта никогда не используется напрямую. Это просто место, где collectstatic команда управления сбрасывает все ваши статические ресурсы для использования в производстве.
если вы хотите статические ресурсы для всего проекта (не привязанные к какому-либо конкретному приложению), вам понадобится совершенно отдельный каталог (т. е. не такой же, как MEDIA_ROOT или STATIC_ROOT ). Я склонен использовать один под названием «активы». Затем вам нужно будет сказать Django, чтобы посмотреть здесь статические ресурсы, а также с STATICFILES_DIRS настройка:
MEDIA_ROOT / MEDIA_URL теперь используются только для загрузки пользователей (например, любой файл, созданный через FileField s и ImageField s, поэтому вам все еще нужно это, но вы никогда не будете вручную хранить что-либо там.
когда вы достигнете производства, ваш веб-сервер должен будет обслуживать оба MEDIA_ROOT и STATIC_ROOT at MEDIA_URL и STATIC_URL , соответственно. Вам также нужно будет запустить:
чтобы Django скомпилировал все ваши статические файлы в указанный каталог by STATIC_ROOT .
Источник
Django media files doesn’t work when debug=false
settings.py
urls.py
When I set DEBUG=False and run the server using python manage.py runserver —insecure all static file are serve successfully but media files doesn’t appear. In debug console media urls raise error 500.
3 Answers 3
static helper function does not work in DEBUG=False mode. And should not. Serving static/media files with Django in prod is not recommended. Configure your webserver (Nginx, Apache. ) to serve these files.
error 500 — investigate log files to understand what causes app failure. static file are serve successfully perhaps they are being taken from browsers cache.
I had been Using WhiteNoise which allows your web app to serve its own static files, making it a self-contained unit that can be deployed anywhere without relying on nginx, Amazon S3 or any other external service.
1 — Install with pip:
2 — Edit your settings.py file and add WhiteNoise to the MIDDLEWARE_CLASSES list, above all other middleware apart from Django’s SecurityMiddleware :
Thats All you need to serve static files without configuring any third party server.
Источник