Изображения, отображаемые как поврежденные изображения в проекте Django - PullRequest
0 голосов
/ 10 февраля 2020

Я получаю испорченное изображение в django проекте, но, насколько я уже проверил, код выглядит правильно. Вот код в settings.py:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

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

Я также импортировал параметр media в разделе шаблонов:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
            ],
        },
    },
]

Вот код, который я использую в шаблоне.

{% if request.user.profile.picture %}
<img src="{{ request.user.profile.picture.url }}" height="35" class="d-inline-block align-top rounded-circle">
{% else %}
<img src="{% static 'img/default-profile.png' %}" height="35" class="d-inline-block align-top rounded-circle">
{% endif %}

Изображение default-profile.png загружается правильно, но другие изображения профиля - нет, хотя они правильно загружались в папку мультимедиа, а их URL-адреса правильно отображаются в базе данных. Кто-нибудь знает, что я делаю неправильно?

РЕДАКТИРОВАТЬ:

Вывод HTML изображения выглядит следующим образом:

<img src="/media/users/pictures/Foto.jpg" height="35" class="d-inline-block align-top rounded-circle">

Он выглядит правильно при проверке тега sr c, поскольку он сопоставляет MEDIA_URL с valur, который был сохранен в базе данных после него.

1 Ответ

0 голосов
/ 11 февраля 2020

Похоже, что вы неправильно обслуживаете файлы мультимедиа во время разработки. Вы можете попробовать добавить это в список urlpatterns в файле urls.py вашего сайта.

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Пожалуйста, обратитесь к этой информации в документации для получения дополнительной информации. подробности.

...