Django的媒体文件夹中的“无法加载图像”

时间:2019-10-15 21:15:55

标签: python html django

我正在尝试显示数据库(SQLite,Django2.7)中的图像。这些图像存储在根/媒体/图片中。

models.py

class News(models.Model):
    news_id         = models.AutoField(primary_key=True, editable=False)
    news_img        = models.FileField(upload_to="pictures/",validators=[FileExtensionValidator(allowed_extensions=['svg'])] )

urls.py

urlpatterns = [...]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

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

我尝试通过以下方法在var中插入路径:

template.html

{% for news_f in news_f%}
<div>
  <img src="{{ media }}{{news_f.news_img}}">
</div>
{% endblock %}

{% for news_f in news_f%}
<div>
  <img src="{{news_f.news_img.url}}">
</div>
{% endblock %}

当我在浏览器中检查元素时,将获得文件的正确路径。

<img src="/media/pictures/file.svg">

但它不会显示在HTML中:

Could not load the image

2 个答案:

答案 0 :(得分:1)

发生这种情况是因为django不提供静态文件。通常,您将django与一些网络服务器(如nginx)一起使用,而这些服务器是更可靠的服务文件。

请签出django文档https://docs.djangoproject.com/en/2.2/howto/static-files/deployment/

答案 1 :(得分:1)

您对媒体文件的配置是正确的,问题在于Django默认不提供正确的mime类型的SVG文件,this answer说明了如何使其正常工作。