我有一个Django应用程序,它正在提供静态SVG文件(我将我的浏览器直接指向:http://myserver.com/static/my.svg) . 我正在使用Django附带的内置网络服务器 . 我从Ubuntu服务器运行此应用程序,它运行良好 . 当我说"worked fine"时,我的意思是svg文件直接显示在浏览器窗口上(适用于Firefox和Chrome) . 但是,当我在Centos服务器上运行相同的Django应用程序时,Firefox和Chrome都会提示用户保存/下载svg文件 .
在那个完全相同的Centos服务器上,我尝试使用Apache作为网络服务器提供完全相同的svg文件,瞧,文件再次直接显示在浏览器上(没有任何提示)!
我只能将行为上的差异归结为Django上的内置web服务器 . 它以某种方式向浏览器发送内容,使浏览器认为文件需要下载而不是直接呈现 .
在Centos上使用Django(可能是某些设置),我需要做些什么特别的事情吗?我的centos版本,Django和Python版本如下所示:
Centos Release :
LSB Version: :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 5.7 (Final)
Release: 5.7
Codename: Final
Django and Python :
(myenv)[root@foo bar]# python
Python 2.7.1 (r271:86832, Mar 17 2014, 11:59:55)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 6, 2, 'final', 0)
谢谢
1 回答
虽然避免Django的内置网络服务器将解决这个问题,但我在另一篇文章中找到了最相关的答案:Can the Django dev server correctly serve SVG? . 这个问题的正确答案是在Centos中/etc/mime.types文件没有svg文件的条目 . 这是Ubuntu的相应条目:
因此,此问题的解决方案是以下任一项:
将条目添加到/etc/mime.types文件中
将以下代码添加到Django中的“settings.py”文件中:
谢谢你们的评论 .