2015-06-19 74 views
2

這是我的文件夾結構CSS中的自定義模板不會呈現爲404和500頁的Django 1.8

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。通常,CSS可以在其他頁面上正常工作,但是當我設置012時檢查settings.py中的自定義404錯誤頁面,整個項目的css消失。有關文件夾結構或其他問題? 編輯:core.css是主要的css文件和other css files包含插件的css

+0

您的handler404和視圖都沒問題。但你不需要它們。只需要一個自定義的404模板就夠了。 – allcaps

回答

1

這是關於提供靜態文件。當你使用DEBUG = True時,然後django會關心他們,否則你的服務器應該這樣做。調試模式下的Django使用這個view。從那裏的警告:

此視圖將只在DEBUG爲True時才起作用。

這是因爲這種觀點是非常低效的,可能不安全。 這隻適用於本地開發,不應該在生產中使用 。

您可以運行與--insecureoption您的服務器只是爲了測試404錯誤,或者你可以explicilty該頁面創建網址,以檢查其造型:

使用--insecure選項強制服務靜態文件與 staticfiles應用程序,即使DEBUG設置爲False。通過使用這個你 承認的事實,這是非常低效的,可能 不安全。這僅適用於本地發展,不應該被 在生產中使用,並且只當staticfiles應用程序是在 項目的INSTALLED_APPS設置。 runserver --insecure不會 與CachedStaticFilesStorage一起使用。

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/