我的浏览器(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,所以我刚开始使用模板继承。
感谢您甚至阅读了所有这些内容。