Django开发服务器的MIME类型问题 - 无法处理CSS

0 投票
1 回答
720 浏览
提问于 2025-04-18 04:49

我这里使用的是Python 3.3.5和Django 1.6.4。

<link rel="stylesheet" href="css/style.css" type="text/css">

在Django的开发服务器上(通过manage.py runserver启动),上面的CSS文件被当作文本文件(text/plain)来处理,所以样式没有加载。其实,我所有的JavaScript文件也是以文本文件的形式被处理,但对它们来说似乎没什么影响。我在Chrome的调试工具中确认了是text/plain,但这并不是浏览器特有的问题,因为在Firefox中样式也没有加载。

我知道CSS文件是被加载的,因为在服务器控制台上我看到了200/304的状态信息,所以这不是静态文件路径的问题。

最开始我在Python控制台运行mimetypes.guess_type('test.css')时,它返回的是'text/plain'。然后我运行了mimetypes.add_type('text/css', '.css'),现在mimetypes.guess_type('test.css')返回'text/css'。不过,服务器仍然把文件当作文本文件来处理。

有没有人遇到过这个问题?

1 个回答

5

Django服务器使用的是标准的Python库mimetypes来处理文件类型。它会把.css这种文件扩展名和text/css这种类型关联起来,但在这之前,它会先查看系统中存储的这些关联信息。

  • 在Windows系统中,这个信息存储在注册表的HKCR\.css\Content Type这个位置。
  • 在Linux系统中,这个信息可能在/etc/mime.types或者~/.mime.types文件里。

有些表现不太好的软件可能会把.csstext/plain这种类型关联在一起。

撰写回答