Il server dev Django può servire correttamente SVG?

Sto cercando di servire una mappa svg usando:

   

In Firefox questo porta a un prompt di plugin. Se rinominare la mappa. svg alla mappa. xml mostra l’immagine correttamente. Presumo questo perché il server di sviluppo di Django (in particolare django.views.static.serve ) non sta servendo lo svg con il tipo mime corretto. È questo il problema, e se è così, c’è una patch?

Al momento non ho a disposizione Django per testarlo, ma sembra che il server statico usi la libreria dei tipi Mime per determinare il tipo di contenuto (in particolare guess_type ()).

Con un po ‘di Google, mi sono imbattuto in un codice che probabilmente potresti inserire nel tuo settings.py per aggiungere il supporto per il tipo di contenuto svg:

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

C’è anche questo post sul blog specifico per piloni, ma cita un problema simile. Egli specifica che i tipi MIME sono memorizzati in “/etc/mime.types” e che SVG è mancante perché non è un tipo MIME ufficiale. Potrebbe avere ragione, dal momento che non riesco a trovare un tipo MIME per SVG in nessuna parte dello IANA .

Se stai servendo SVG dynamicmente da una normale vista di Django, puoi specificare il tipo di mimo nell’object HTTPResponse che ritorni da quella vista. In questo caso, ti consigliamo di utilizzare il mimetype sia per gli sviluppatori che per l’utilizzo in produzione:

 def myview(request): svg_data = generate_some_svg_data() return HttpResponse(svg_data, mimetype="image/svg+xml")