Django 静态文件图像未显示在 IBM Cloud Foundry 上
Django static file images not displayed on IBM Cloud Foundry
我已经阅读了一些其他话题、用谷歌搜索并尝试阅读文档,但找不到我要找的东西。我刚开始玩 Django,仅供参考。同样的代码在我的本地和 pythonanywhere.com
上运行良好
我的网络应用程序显示 'interests'、'images' 和 'urls' 的列表。 'image' 实际上是本地图像文件的路径。该应用程序可以很好地部署到 IBM Cloud Foundry 并且可以正常工作,除了静态文件中的图像不显示仅显示损坏的图像图标。
部署时,我在日志中看到消息“153 个静态文件已复制到‘/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 无法提供 files/media 服务,这样做也不是一个好习惯。相反,您应该使用像 Nginx 或 apache 这样的网络服务器来为静态和媒体文件提供服务。
尽管有一个解决方法:
但我不推荐使用它。相反,请查看使用网络服务器提供文件服务。
我已经阅读了一些其他话题、用谷歌搜索并尝试阅读文档,但找不到我要找的东西。我刚开始玩 Django,仅供参考。同样的代码在我的本地和 pythonanywhere.com
上运行良好我的网络应用程序显示 'interests'、'images' 和 'urls' 的列表。 'image' 实际上是本地图像文件的路径。该应用程序可以很好地部署到 IBM Cloud Foundry 并且可以正常工作,除了静态文件中的图像不显示仅显示损坏的图像图标。
部署时,我在日志中看到消息“153 个静态文件已复制到‘/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 无法提供 files/media 服务,这样做也不是一个好习惯。相反,您应该使用像 Nginx 或 apache 这样的网络服务器来为静态和媒体文件提供服务。
尽管有一个解决方法:
但我不推荐使用它。相反,请查看使用网络服务器提供文件服务。