2012-09-07 61 views
0

我正在開發包含多個應用程序的Django 1.3項目。項目結構有點像這樣:Django項目中每個應用程序的不同錯誤處理程序

- MyProject 
    - manage.py 
    - MyProject 
    - settings.py 
    - url.py 
    - wsgi.py 
    - core 
    - models.py 
    - web 
    - urls.py 
    - views.py 
    - api 
    - urls.py 
    - views.py 

我現在想定義不同handler404和handler500爲api應用程序,因爲它應該返回JSON而web返回HTML,可以使用默認的處理程序。

有沒有辦法覆蓋這個設置,所以它只適用於一個應用程序?我真的很想避免僅僅因此而運行多個服務器實例。

感謝西蒙

回答

2

Django httphandler404是全球網站。在你的情況下,你將不得不編寫一個封裝視圖,這取決於url(或request中的某個其他屬性)或者爲api應用返回JSON併爲web應用返回HTML。您還可以在api中定義單獨的錯誤處理視圖,web可以從包裝視圖調用它們。

參考:Customizing error views

1

您可以定義全局404和500處理器,其分派到根據請求的內容類型,編碼接受,和/或針對特定路徑的錯誤處理程序。這些特定的處理函數當然可以存在於你的應用程序模塊中。