2010-02-27 55 views
4

我正在使用Django 1.1.1 stable。當DEBUG設置爲TrueDjango flatpages正常工作;當DEBUGFalse我嘗試訪問的每個flatpage引發了一個自定義的404錯誤(我的錯誤模板顯然工作正常)。當DEBUG爲False時(404和500模板存在),Django提升404頁面

在互聯網上搜索建議創建404和500模板,我已經做了。

我已將FlatpageFallBackMiddleware添加到middleware_classes,並將flatpages添加到已安裝的應用程序中。任何想法,我怎樣才能使flatpage工作?

回答

0

關鍵是檢查您的中間件的順序。中間件以的方式在(請求和查看)中自上而下的順序執行,並且在中途從下往上的順序列出(響應和異常)。所以,如果你正在404處理程序上獲得一個完全合理的flatpage URL,那麼在flatpage中間件被調用之前,某些東西正在捕獲404。

1

嘗試之前django.middleware.common.CommonMiddleware

添加FlatpageFallBackMiddleware和肯定,你404.html和500.html都存放在你的模板的根目錄(eg: templates/404.html)

6

同樣的事情發生在我,直到我發現, 404視圖發送了200狀態響應。因此,所有你需要做的在處理你的404響應的視圖補充一點:

def 404_handler(request): ... 

    response = render_to_response('404.html', locals(), context_instance=RequestContext(request)) 
    response.status_code = 404 
    return response 
+0

那幫了我,謝謝 – dmitko 2011-03-25 14:39:42

+0

很好的答案。解決了我的問題。 – pythondjango 2013-01-03 03:26:22

0

在不同的上下文有同樣的錯誤。這個問題是從

from django.conf.urls.defaults import * 

造成我改變文件urls.py

from django.conf.urls.defaults import include, patterns 

pylint建議,但是這忽略了它們預計將進口*隱含進口handler404和handler500。

所以要麼添加那些導入或只是導入*作爲Django文檔建議解決這個問題。

0

進行錯誤處理視圖,打印棧跟蹤import traceback;traceback.print_exc()而不是無視地忽略錯誤。

相關問題