3

我的浏览器(firefox)控制台确认接收状态为 200 的文件,firefox 给了我这个:

The stylesheet http://localhost:8000/css/full-width-pics.css was not loaded because its MIME type, "text/html", is not "text/css". localhost:8000
The stylesheet http://localhost:8000/css/mainstyle.css was not loaded because its MIME type, "text/html", is not "text/css". localhost:8000

正如 Django正在提供文件但只是使用错误的 mimetype 进一步证明:所有文件都给出状态代码 200:

[05/Jul/2015 08:52:33]"GET / HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /css/full-width-pics.css HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /js/bootstrap.min.js HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /css/mainstyle.css HTTP/1.1" 200 6263
[05/Jul/2015 08:52:33]"GET /js/jquery.js HTTP/1.1" 200 6263

这是我到目前为止所发现的。

Django 使用 python 来猜测 mime 类型。Python 使用它运行的系统来猜测 mime 类型。在注册表中某处的窗口中。我在 Ubuntu 上,所以对我来说,它位于 /etc/mime.types 中。

我在 /etc/mime.types 中找到了这一行:

text/css                    css

这意味着问题不在于我的系统。那是python的问题吗?否。运行以下命令:

import mimetypes
mimetypes.guess_type("test.css")

给了我以下内容:

('test/css', none)

我已经从其他 stackoverflow 答案中尝试了一些“黑客”。一种技巧是添加mimetypes.add_type("text/css", ".css", True)到 settings.py。它没有用。

另一个是添加url(r'.*\.css$', views.css),到 urls.py 并添加到 views.py:

def css(request):
    filename = request.path.strip("/")
    data = open(filename, "rb").read()
    return HttpResponse(data, mimetype="text/css")

也没有工作。我删除了他们两个。现在我只想知道为什么会发生这种情况以及如何正确解决它。我确定问题出在 Django 上,但我不确定在哪里。

还有一个重要的信息。这只是在我开始使用模板继承之后才开始发生的。之前<link href="css/full-width-pics.css" rel="stylesheet" type="text/css" />直接在 index.html 中,它工作正常。现在它位于 base.html 和 index.html 中“扩展”base.html。我正在学习 Django,所以我刚开始使用模板继承。

感谢您甚至阅读了所有这些内容。

4

0 回答 0