Can the Django dev server correctly serve SVG?

后端 未结 3 839
夕颜
夕颜 2020-12-01 05:32

I am trying to serve a svg map using:


    

        
                      
相关标签:
3条回答
  • 2020-12-01 06:00

    In my case the issuer was the deployment with nginx+gunicorn. My nginx docker image served the text/plain mimetype for .svg file. This extension of mime.types resolved the issue:

    http {
        include mime.types;
        types {
            image/svg+xml svg;
        }
    
    0 讨论(0)
  • 2020-12-01 06:10

    If you're serving the SVG dynamically from a regular django view, you can specify the mimetype in the HTTPResponse object you return from that view. In this case, you'll want the mimetype in place for both dev and production use:

    def myview(request):
        svg_data = generate_some_svg_data()
        return HttpResponse(svg_data, mimetype="image/svg+xml")
    
    0 讨论(0)
  • 2020-12-01 06:14

    I don't have Django available to test this at the moment but it looks like the static server uses the mimetypes library to determine the content type (specifically guess_type()).

    With a little bit a Googling, I came across some code that you could probably throw in your settings.py to add support for the svg content type:

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

    There's also this blog post specific to Pylons but it mentions a similar issue. He specifies that the MIME types are stored in "/etc/mime.types" and that SVG is missing because it's not an official MIME type. He may be right, since I can't find a MIME-type for SVG anywhere on the IANA.

    0 讨论(0)
提交回复
热议问题