Jas*_*sta 21 python django svg
我正在尝试使用以下服务来提供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>
Run Code Online (Sandbox Code Playgroud)
在Firefox中,这会导致插件提示.如果我重命名地图.svg来映射.xml它正确显示图像.我假设这是因为Django的dev服务器(特别是django.views.static.serve)没有使用正确的mime类型为svg提供服务.这是问题,如果有,是否有补丁?
Lan*_*ney 46
我目前没有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)
Run Code Online (Sandbox Code Playgroud)
还有这篇专门针对Pylons的博客文章,但它提到了一个类似的问题.他指定MIME类型存储在"/etc/mime.types"中,并且缺少SVG,因为它不是官方MIME类型.他可能是对的,因为我无法在IANA的任何地方找到SVG的MIME类型.
如果从常规django视图动态提供SVG,则可以在从该视图返回的HTTPResponse对象中指定mimetype .在这种情况下,您需要为开发和生产使用mimetype:
def myview(request):
svg_data = generate_some_svg_data()
return HttpResponse(svg_data, mimetype="image/svg+xml")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8826 次 |
| 最近记录: |