AttributeError в /media/... при запросе файла в папке media Стадия разработки Django

Когда я запрашиваю медиа файлы (.png в данном случае) в папке media в разработке, я получаю эту ошибку:

Ошибка атрибута в /media/test.png У этого экземпляра FileResponse нет атрибута content. Используйте streaming_content вместо него.

Запрос: http://localhost:8000/media/test.png

Я добавил в шаблоны url следующее:

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Ниже приведены настройки:

STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = '/static/'
MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'

Статические файлы работают отлично.

Что я упускаю из виду? Спасибо!

hello, если у вас отладка установлена на True, вы должны использовать следующее:

сначала зайдите в настройки и установите все статические каталоги файлов в

STATICFILES_DIRS = [
list of your static file,.......,]

на втором этапе у вас должно быть следующее в вашем urls.py

    urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATICFILES_DIRS[0])

примечание: есть разница между static_root и staticfile_dirs

static_root используется только для производства

вот моя почта для более подробного объяснения :nguewofoss@gmail.com

Я нашел проблему. В новой версии django staticfiles отображаются с потоковымHttpResponse, у которого нет атрибута content.

В своем коде я нашел следующий код, который указывает на (не существующий) атрибут content:

if b'<html' in response.content[:100].lower():

Я добавил это, чтобы решить проблему:

if not hasattr(response, 'content'):
    return response
if b'<html' in response.content[:100].lower():

Спасибо всем!

Вернуться на верх