CSS未在404和500页django 1.8的自定义模板中呈现

时间:2015-06-19 19:49:05

标签: python django

这是我的文件夹结构

Music
    -Music
    -Feature
           -static
               -feature
                   core.css
                   -css
                      other css files
                   -js
                   -img  
           -templates
               404.html
               500.html
               index.html
              -feature
                  about.html
                  detail.html
                  template.html 
    manage.py

views.py

 from django.shortcuts import render

 def error404(request):
     return render(request,'404.html')

urls.py

urlpatterns = [

url(r'^featured/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^about/$', views.about, name='about'),
url(r'^FAQ/$', views.faq, name='faq'),
]
handler404 = 'mysite.views.error404'

自定义404.html文件会被呈现但没有css.And通常css在其他页面上正常工作但是当我设置debug=false以检查settings.py中的自定义404错误页面时整个项目都消失了。与文件夹结构或其他一些问题有关? 编辑:core.css是主要的css文件,other css files部分包含插件的css

2 个答案:

答案 0 :(得分:1)

关于提供静态文件。当你使用DEBUG = True时,django会关注它们,否则你的服务器应该这样做。调试模式下的Django使用此view。来自那里的警告:

  

此视图仅在DEBUG为True时有效。

     

这是因为这种观点非常低效,而且可能不安全。   这仅适用于本地开发,不应使用   在生产中。

您可以使用--insecure option运行您的服务器,只是为了测试404错误,或者您可以为该页面创建详细的url以检查其样式:

  

使用 - insecure 选项强制提供静态文件   staticfiles app即使DEBUG设置为False。通过使用你   承认它的效率非常低,而且很可能   不安全的。这只是用于本地开发,绝不应该   在生产中使用,仅在staticfiles应用程序所在的时候可用   您的项目的INSTALLED_APPS设置。 runserver --insecure没有   使用CachedStaticFilesStorage。

答案 1 :(得分:1)

你的handler404和视图都没问题。但是你不需要它们。只需一个自定义404模板即可。请参阅:https://docs.djangoproject.com/en/1.8/topics/http/views/#the-http404-exception

  

为了充分利用Http404例外,你应该这样做   创建在引发404错误时显示的模板。这个   模板应该被称为404.html并位于顶层   你的模板树。

模板位于正确的位置。我认为问题是提供静态文件。在浏览器中打开开发人员工具,以查看无法加载的资源(控制台,网络或源选项卡)。检查路径。 404源头部分是否有外部样式表链接? (元素选项卡或查看源代码)。

https://docs.djangoproject.com/en/1.8/howto/static-files/