Из-за чего не отображается изображение Django?

Ссылка скопирована
1 ответ

Сетинги

STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = 'static/' MEDIA_ROOT = os.path.join(BASE_DIR, 'madia/') MEDIA_URL = '/media/'

Юрл

if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Шаблон

<div class="container-fluid"> <div class="row"> <div class="col-4"> <img src="{{ user.user_info.photo.url }}"> <a>{{ user.username }} </a> </div> </div> </div> <div class="container">

Рендрится
68df7f31e9ba7499150172.png
Нужно понять: в модели стоит дефолт на стоковую аватарку пользователя, она туда сохраняется. Так что в данном случае я вообще не имею дела с отображениями статичсеких файлов в шаблон, верно?

Жду everything is bad

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Анна SEO Ответ

Если в Django не отображается изображение, почти всегда проблема в настройке media/static, пути в шаблоне или в том, что файл физически не доступен веб-серверу. Сначала определите: это изображение из static или загруженный пользователем файл из media.

Для загруженных файлов в settings.py должны быть настройки:

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media'

В режиме разработки добавьте в urls.py:

from django.conf import settings
from django.conf.urls.static import static
 
urlpatterns = [
    # ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

В шаблоне используйте URL поля, а не путь файла:

&lt;img src="{{ object.image.url }}" alt=""&gt;

&lt;img src="{{ object.image.url }}" alt=""&gt;

Если это static-файл:

{% load static %}
&lt;img src="{% static 'images/logo.png' %}" alt="Logo"&gt;

{% load static %} &lt;img src="{% static 'images/logo.png' %}" alt="Logo"&gt;

Проверьте в браузере прямую ссылку на картинку. Если URL отдаёт 404 — проблема в маршруте или файле. Если 403 — права. Если URL правильный, но картинка не видна — смотрите CSS, размеры блока, lazy loading и mixed content.

На продакшене Django обычно не раздаёт media/static сам. Нужен Nginx/Apache location для /media/ и /static/.

Итог: разделите media и static, проверьте URL картинки напрямую, настройки MEDIA_URL/MEDIA_ROOT, шаблон и web-server. Без прямой доступности файла браузер изображение не покажет.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно