Django静态模板标签不显示SVG
Posted
技术标签:
【中文标题】Django静态模板标签不显示SVG【英文标题】:Django static templatetag not displaying SVG 【发布时间】:2016-05-18 20:32:16 【问题描述】:我正在尝试使用 django 的 static
模板标签来显示 SVG,但它似乎无法将 SVG 识别为有效的图像 url。这是我目前拥有的:
settings.py
>import mimetypes
mimetypes.add_type("images/svg+xml", ".svg", True)
landing.html
% load staticfiles %
<img src="% static 'images/right-arrow.svg' %" />
至少在我的 view.py 中,它可以识别 SVG mimetype:
views.py
>print(mimetypes.guess_type(static('images/right-arrow.svg')))
# returns ('images/svg+xml', None)
SVG 确实显示在非 django 页面中,如果我尝试在新的浏览器选项卡中打开 SVG 路径,它将下载 SVG。
我目前正在使用 python 3.4 和 django 1.8.4。
【问题讨论】:
【参考方案1】:您正在加载静态文件并使用静态文件?
这是错误的。
尝试将% load staticfiles % <img src="% static 'images/right-arrow.svg' %" />
更改为
% load static % <img src="% static 'images/right-arrow.svg' %" />
并且您还需要考虑应该在哪个应用程序中找到您的静态文件。
【讨论】:
【参考方案2】:将此添加到您的 settings.py 文件中。
import mimetypes
mimetypes.add_type("image/svg+xml", ".svg", True)
mimetypes.add_type("image/svg+xml", ".svgz", True)
在您的情况下,您在 add_type 中添加了 images,应该是单数 (image)。
【讨论】:
【参考方案3】:我遇到了类似的问题。我建议您使用: src=" STATIC_URL images/right-arrow.svg" 而不是 src="% static 'images/right-arrow.svg' %"
svg 格式可能并不总是能识别 django 获取静态文件内容的方法。希望这会有所帮助:)
【讨论】:
【参考方案4】:我发现了问题。在settings.py
中,应该是mimetypes.add_type('image/svg+xml', '.svg', True)
。 image
应该是单数。
【讨论】:
以上是关于Django静态模板标签不显示SVG的主要内容,如果未能解决你的问题,请参考以下文章