【问题标题】:Django static templatetag not displaying SVGDjango静态模板标签不显示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。

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

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

    这是错误的。

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

    【讨论】:

      【解决方案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 应该是单数。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-05-23
            • 2018-09-03
            • 2011-05-14
            • 1970-01-01
            • 2013-04-19
            • 2015-07-10
            • 2014-05-23
            • 1970-01-01
            相关资源
            最近更新 更多