这是我的文件夹结构
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
答案 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源头部分是否有外部样式表链接? (元素选项卡或查看源代码)。