Media django 3 не работает

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.

Источник

Оцените статью