2011-03-02 57 views
7

我有管理面板和direct_to_template主頁的基本應用程序。當我輸入與url不匹配的url時,我收到404錯誤,但是當我將DEBUG設置爲false時,我收到500.html而不是404.html。任何想法爲什麼?500.html而不是404.html

回答

8

當視圖函數失敗時,Django會提供500,這意味着必須有一些非特定於調試的代碼中斷。

要告訴的唯一方法是通過服務器日誌或django發送到ADMINS列表的電子郵件來查看django是通過哪種方式記錄日誌。

+0

你說得對,我在404.html有錯誤。當調試是真的時,它沒有出現。非常感謝:) – szaman 2011-03-02 12:30:07

+1

對我來說,這是ALLOWED_HOSTS設置的問題。使用DEBUG = False在localhost:8000上運行站點要求將'*'添加到ALLOWED_HOSTS列表中,否則會出現500錯誤。請務必記住在部署到生產服務器之前再次取出它。 – 2013-09-01 09:32:26

+0

@Sybren加入'*'解決了我的問題。謝謝! – laike9m 2014-02-11 10:04:05

4

我還會檢查settings.py中的TEMPLATE_DIRS路徑,因爲這是我的情況中的問題。 Django引發了404錯誤,但是因爲它無法找到404.html(在TEMPLATE_DIRS中指定的路徑),所以它引發了500錯誤 - 找不到模板(當debug爲True或服務器日誌時,當debug = false時)。

1

也許有錯在你404.html.For比如我用像擴展

{% extends base.html%} 
在我404.html

,標籤那麼它總是顯示「斷絕錯誤500」而不是「網頁無法發現404'。 但當我糾正我的錯誤如下

{% extends "base.html" %} 

一切順利。

2

我遇到了同樣的問題。我使系統發送錯誤給我的Gmail:

SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 127.0.0.1:8000 

所以,我在settings.py添加以下代碼:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] 

而現在,它的確定。我認爲當你使DEBUG和TEMPLATE_DEBUG爲false時,你必須設置ALLOWED_HOSTS。

祝你好運。