一尘不染

Django开发服务器可以正确提供SVG吗?

django

我正在尝试使用以下方式提供SVG地图:

<object data="map.svg" type="image/svg+xml" width="400" height="300">
    <embed src="map.svg" type="image/svg+xml" width="400" height="300" />
</object>

在Firefox中,这会导致插件提示。如果我重命名地图。svg映射。xml,它可以正确显示图像。我认为这是因为Django的开发服务器(特别是django.views.static.serve)没有为svg提供正确的mime类型。这是问题吗?如果是,是否有补丁?


阅读 473

收藏
2020-03-30

共1个答案

一尘不染

我目前没有可用的Django来进行测试,但看起来静态服务器使用mimetypes库来确定内容类型(特别是guess_type())。

稍作搜索,我遇到了一些代码,你可能会在你的settings.py中添加一些代码,以添加对svg内容类型的支持:

import mimetypes

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

也有专门针对Pylons的博客文章,但其中提到了类似的问题。他指定MIME类型存储在“ /etc/mime.types”中,并且缺少SVG,因为它不是官方的MIME类型。他可能是对的,因为在IANA上的任何地方都找不到SVG的MIME类型。

2020-03-30