Django静态模板标签不显示SVG

时间:2016-02-09 00:59:04

标签: python django django-templates

我尝试使用django的static模板标签来显示SVG,但它似乎并不认为SVG是有效的图片网址。这就是我目前所拥有的:

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。

4 个答案:

答案 0 :(得分:0)

我发现了这个问题。在settings.py中,它应为mimetypes.add_type('image/svg+xml', '.svg', True)image应该是单数。

答案 1 :(得分:0)

我遇到了类似的问题。我建议你使用: src =“{{STATIC_URL}} images / right-arrow.svg”而不是src =“{%static'images / right-arrow.svg'%}”

svg格式可能并不总是识别django获取静态文件内容的方法。希望这有助于:)

答案 2 :(得分:0)

将此添加到您的 settings.py 文件中。

import mimetypes

mimetypes.add_type("image/svg+xml", ".svg", True)
mimetypes.add_type("image/svg+xml", ".svgz", True)

在您的情况下,您已在add_type中添加了图像,该图像应为单数(图像)。

答案 3 :(得分:0)

您正在加载静态文件并使用静态文件?

这是错误的。

尝试将 {% load staticfiles %} <img src="{% static 'images/right-arrow.svg' %}" /> 更改为 {% load static %} <img src="{% static 'images/right-arrow.svg' %}" /> 并且您还需要考虑应该在哪个应用程序中找到您的静态文件。