我正在为我的网站设计一个使用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)
答案 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