Изображения статических файлов Django не отображаются на IBM Cloud Foundry

Я прочитал несколько других тем, погуглил и попробовал прочитать документацию, но не могу найти то, что ищу. Я новичок в работе с Django, к вашему сведению. Этот же код работает нормально на моей локалке и на pythonanywhere.com

Мое веб-приложение отображает список "интересов", "изображений" и "урлов". Изображение" на самом деле является путем к локальному файлу изображения. Приложение прекрасно развертывается на IBM Cloud Foundry и работает, за исключением того, что изображения в статических файлах не отображаются, отображается только иконка сломанного изображения

При развертывании я вижу в логах сообщение "153 static files copied to '/tmp/app/static'", что наводит меня на мысль, что collectstatic запустился без проблем.

из models.py:

class Interest(models.Model):
    interest = models.CharField(max_length=100)
    **image = models.ImageField(upload_to='interest/images')**
    url = models.URLField(blank=True)

    def __str__(self):
        return self.interest

Из html-шаблона:

{% extends 'portfolio/base.html' %}

{% block about-class %} about-color-class {% endblock %}

{% block content %}

{% load static %}

<!-- Interests -->

<section class="interests">
    <div class="container">
        <div class="row">
            <h1>Some of my interests...</h1>
        </div>
        <div class="row-images">
            {% for interest in interests %}
            <div class="col-lg-1 col-md-1 col-xs-1">
                <a href="{{ interest.url }}"><**img src="{{ interest.image.url }}" alt=""**></a>
            </div>
            {% endfor %}
        </div>
    </div>
</section>

<!-- Interests End -->

Из settings.py:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

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

Итак, я не уверен, что происходит. Любой совет будет принят с благодарностью. Спасибо.

Я предполагаю, что вы установили debug=False при развертывании на сервере. Проблема в том, что Django не может обслуживать файлы/медиа, когда вы выводите его из режима Debug, и это также не является хорошей практикой. Скорее вам следует использовать веб-сервер, такой как Nginx или apache, для сервера статических и медиа файлов.

Хотя есть обходной путь: LINK

Но я бы не рекомендовал использовать его. Вместо этого рассмотрите возможность обслуживания файлов с помощью веб-сервера.

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