一般來說,如果該請求是AJAX,然後從返回Ajax錯誤的反應,你可以註冊自己的handler500和測試它表明如果DEBUG爲True,會發生什麼情況,或者如果DEBUG爲False,則會發出一般性錯誤。
其他選項是使用Firebug或Chrome Inspector來瀏覽Ajax響應,或者設置某種形式的記錄日誌記錄錯誤,即使在部署站點時也可以使用,以便對任何可能發生的錯誤。
Django的本身已經內置的日誌記錄功能,其中之一是發送電子郵件到管理員,但可以使用Django's integration with Python's built in logging定義自己。對於這些處理程序的一個選項是django-sentry,我在我的所有生產站點上都使用它來記錄發生的任何錯誤,並且還包括重寫handler500以便爲最終用戶提供可用於查找其確切錯誤的參考編號的功能實例。
Sentry自帶2個應用程序,一個是服務器,一個是客戶端。在一臺典型的生產環境中,當你有多臺機器服務於同一個站點時,你將擁有一個只有哨兵的專用哨兵服務器。但是,對於與網站集成的單個站點而言,確定無疑。
要配置哨兵,您需要將sentry
(服務器)和sentry.client
(客戶端)都添加到您的INSTALLED_APPS
。然後你需要配置你的日誌記錄。
下面是一個例子:
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"mail_admins": {
"class": "django.utils.log.AdminEmailHandler",
"level": "ERROR"
},
"sentry": {
"class": "sentry.client.handlers.SentryHandler",
"level": "ERROR",
}
},
"loggers": {
"django.request": {
"handlers": ["sentry", "mail_admins"],
"level": "ERROR",
"propagate": True
}
},
}
上面的例子仍將電子郵件管理員如果發生錯誤,和DEBUG = False
。如果您不希望這樣做,請從django.request
的處理程序中刪除mail_admins
。
在螢火蟲或Chrome檢查你其實可以瀏覽甚至Ajax響應,並檢查什麼錯誤是。 –
爲什麼您的測試不能捕捉語法錯誤? –
我從我的桌面構建應用程序並進行了許多更改。我正在測試自己,因爲我有問題。螢火蟲控制檯也沒有顯示任何錯誤,因爲他們發生在服務器端 –