Невозможно отобразить изображение в шаблоне Django с использованием DRF - PullRequest
0 голосов
/ 16 апреля 2020

Мои загруженные изображения не отображаются, когда шаблон отображается в браузере. Я настроил свой шаблон URL-адреса мультимедиа следующим образом:

urlpatterns = [
  # App routes
  ....
]

if settings.ENV == settings.DEV:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

В настройках проекта у меня есть конфигурация мультимедиа следующим образом:

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Вот раздел индекса. * Шаблон 1026 * для отображения изображения cover_image:

<div class="col-md-5" >
    <img src="{{ post.cover_image.url }}" class="rounded img-fluid"/>
</div>

Когда я запускаю сервер, страница отображается правильно, но изображение cover_image не появляется. Это показывает только следующее: enter image description here

Интересно то, что мои загрузки успешны и отображаются в каталоге media / images проекта, а в журнале терминала отображается HTTP-ответ 200, но не уверен, почему он не отображается в браузере. Я использую Django Rest Framework и имею шаблоны для отдельных приложений.

enter image description here

Вот параметры процесса настройки контекста проекта:

'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.template.context_processors.media',
            'django.template.context_processors.static',
            'django.contrib.messages.context_processors.messages',
        ],

Я что-то упустил?

1 Ответ

0 голосов
/ 17 апреля 2020

Здесь недостаточно информации, чтобы определить причину вашей проблемы. Вот шаги, которые вы могли бы выполнить, чтобы исследовать:

  1. Очистить кэш браузера и перезагрузить страницу (на случай, если вы увидите эффект границы из-за предыдущих тестов).

  2. Проверьте источник HTML, который вы получаете от сервера, и, в частности, если {{ post.cover_image.url }} заменено на то, что вы ожидаете (должно быть в порядке, так как ваш журнал показывает, что URL изображения запрашивается и возвращает 200 Код состояния OK).

  3. Введите URL-адрес изображения в браузере и посмотрите, хорошо ли оно отображается. Если это так, это означает, что ваш HTML / CSS имеет что-то не так (возможно, из-за «округленных классов img-Fluid»).

  4. Если 2. не удается, то изображение, которое вы Возможно, загрузка повреждена. Вам необходимо определить, не поврежден ли он во время загрузки или скачивания. Сначала проверьте, хорошо ли загружены изображения на сервер, например, загрузив их, не используя Django (SFTP ...).

  5. Если изображение на сервере хорошее , а затем исследуйте загруженный образ. Сохраните его и попробуйте открыть его с помощью программного обеспечения для изображений. Также проверьте заголовки (неправильный Content-Type?) И размер данных в ответе на запрос изображения (используя инструменты веб-разработчика вашего браузера).

...