Изображения статических файлов 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
Но я бы не рекомендовал использовать его. Вместо этого рассмотрите возможность обслуживания файлов с помощью веб-сервера.