CSS未加载错误的MIME类型Django

30

我在本地安装了virtualenv,以运行一个版本为1.8的Django应用程序,但在运行时CSS和JS文件无法加载。

我得到:

Resource interpreted as Stylesheet but transferred with MIME type application/x-css

我尝试了一些选项,但它们也没有解决问题。我在另一台电脑上运行相同的配置,它可以正常工作。

我的HTML使用以下方式加载CSS:

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

可能是 https://dev59.com/gn7aa4cB1Zd3GeqPo1Up 的重复问题。 - Andriy Ivaneyko
10个回答

35
将以下片段添加到settings.py文件中可能会解决您的问题:
import mimetypes
mimetypes.add_type("text/css", ".css", True)

谢谢,那个有效!但是为什么这个问题只在一些电脑上发生? - jesicadev18
1
因为这与操作系统上CSS文件的错误关联有关,所以在上面的答案中添加行后,所有CSS文件都应该正确关联。您还可以查看我指向的源的已接受答案。祝您愉快! - Andriy Ivaneyko
这真是让我疯狂的问题。这款应用程序在我的 Windows 10 笔记本电脑上运行良好,但在我工作的桌面上未能正确地服务于状态资产。这解决了问题!! - MattSlay
这对我没有任何帮助,我使用的是Windows 7。在虚拟环境下运行它。 - KurtNovice
路径已经在Pycharm中正确验证。它被放置在settings.py中 `import mimetypes mimetypes.add_type("text/css", ".css", True)STATIC_URL = '/static/'`但是链接仍然无法加载。 - Fernando López

23

这种特定的行为在开发环境(DEBUG=True)和部署环境(DEBUG=False)之间会有所不同。

因此,如果您在本地进行开发且DEBUG=False,则出现此错误的可能性很大。但是一旦部署到任何服务器上,它将可以正常工作而没有任何错误。如果您想在开发过程中避免此错误,请设置DEBUG=True


在 DEBUG=False 的情况下,如何避免生产中出现此错误? - Adam P
我已将调试模式设置为True,但仍然没有成功。我在这里提出了我的问题。感谢您的帮助! - laconis

18

"白噪声" 可以解决 "MIME类型"错误,然后 CSS 能够成功加载:

首先,安装 "白噪声"

pip install whitenoise

然后,在"settings.py"中将其设置为"MIDDLEWARE"。最后,CSS成功加载:

MIDDLEWARE = [
    # ...
    "django.middleware.security.SecurityMiddleware",
    "whitenoise.middleware.WhiteNoiseMiddleware", # Here
    # ...
]

我的问题出现在生产环境中,尝试在共享主机上托管Django应用程序,使用whitenoise解决了问题。 - oriohac
这对我来说也解决了,在Railway.app上。 - undefined

12

这个只能在开发中使用吗? - Fed
这是用于开发问题的修复,不应影响您的生产配置。 - Glen Carpenter

5
打开Chrome的F12开发者工具并检查实际收到的内容。在我的情况下,CSS文件实际上被重定向到另一个页面。因此MIME类型是"text/html"而不是"text/css"。

2
你是如何解决"text/html" MIME类型问题的? - Stuti Verma

2

直接访问CSS文件。如果你得到了404错误,那就是答案了,因为当浏览器期望text/css时,Django会提供给你一个text/html文件。

尝试修复你的静态文件,问题很可能就解决了。

enter image description here


1
如果您正在使用Centos并遇到类似问题(我的问题是与svg相关的),那么您可能需要安装mailcap包,如果不存在的话(如this answer所述)。

1
如果您正在使用Django whitenoise插件,则不会使用mimetypes模块,您需要在settings.py中传入自定义类型的字典。
WHITENOISE_MIMETYPES = {
    '.xsl': 'application/xml'
}

0
在我的情况下,我只加载了

{% load static %}

在 Django 中,并没有添加
'{%static '<filename>'%}' 

在 hrefs 中添加此内容后,错误已消失


-3

如果你在开发环境中,请将DEBUG = TRUE。在生产环境中,您可以将其设置为false。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接