Django在自定义404页面上传输MIME类型text / html的样式表

时间:2014-06-29 18:07:35

标签: python html css django mime

我正在为我的网站设计一个使用Django构建的自定义404页面,但是我遇到了与404.html相关联的样式表的问题。

我在settings.py中设置DEBUG = False以查看我的自定义404页面,并将“*”添加到ALLOWED_HOSTS。

然后我用这行改变了urls.py:

handler404 = 'site.views.custom_404'

在views.py中:

def custom_404(request):
    return render_to_response("site/404.html", context_instance=RequestContext(request))

现在当我在本地获得404页面时,我看到我在404.html中编写的html,但样式表style.css不起作用。我在控制台中收到此消息:

Resource interpreted as Stylesheet but transferred with MIME type text/html:
http://127.0.0.1:8000/site/static/style.css

除了这个新的404页面外,我网站上的所有其他页面仍然具有与style.css相关联的正确样式。

我尝试将其添加到settings.py,但没有任何改变:

if DEBUG:
    import mimetypes
    mimetypes.add_type("text/css", ".css", True)

1 个答案:

答案 0 :(得分:0)

您是否在settings.py中定义了静态文件?

我猜你在已安装的应用中有'django.contrib.staticfiles'。 你可以这样定义:

import os.path

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

你的网址或设置中的其他内容执行此操作:

custom_404 = "mysite.views.server_error"

并在意见中:

from django.shortcuts import render

def server_error(request):
    # one of the things ‘render’ does is add ‘STATIC_URL’ to
    # the context, making it available from within the template.
    response = render(request, "404.html")
    response.status_code = 404
    return response