我正在尝试显示数据库(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
答案 0 :(得分:1)
发生这种情况是因为django不提供静态文件。通常,您将django与一些网络服务器(如nginx)一起使用,而这些服务器是更可靠的服务文件。
请签出django文档https://docs.djangoproject.com/en/2.2/howto/static-files/deployment/
答案 1 :(得分:1)
您对媒体文件的配置是正确的,问题在于Django默认不提供正确的mime类型的SVG文件,this answer说明了如何使其正常工作。