有明顯兩種不同的方式在Django返回404錯誤:通過返回HttpResponseNotFound
對象或通過引發Http404
例外。雖然我在我的項目中使用前者,但似乎Django的內部視圖主要使用後者。除了「例外是例外」的口頭禪之外,兩種方式之間的區別和我應該使用的是什麼?有什麼返回`HttpResponseNotFound`,提高了`Http404`在Django之間的區別?
18
A
回答
14
HttpResponseNotFound
就像一個正常的HttpResponse
,只是它發送錯誤代碼404。所以,這取決於你在該視圖中呈現一個合適的404頁面,否則瀏覽器將顯示它自己的默認值。
提高的Http404
異常將觸發的Django調用自己的404錯誤觀點。實際上,這只不過是渲染404.html模板併發送它 - 事實上使用HttpResponseNotFound
。但方便的是,你在一個地方指定了模板(如果你喜歡,可以查看)。
3
除了大牛說,養一個Http404
例外可能是,它允許更加靈活的您生成一個404如從輔助函數中調用棧更深的(可能是一個通常返回非HttpResponse
型)和依賴,而不必創建一個HttpResponseNotFound
並手動將它傳遞備份到您最初起草你的迴應Python的異常傳播。
0
在addtion什麼丹尼爾和esmail說,以供參考,這是字面上HttpResponseNotFound
的Django(V1.8)的定義:
class HttpResponseNotFound(HttpResponse):
status_code = 404
而對於測好,Http404
定義:
class Http404(Exception):
pass
相關問題
- 1. 返回View()和返回base.View()之間有什麼區別?
- 2. Onkeydown返回false和返回super.onkeydown()之間有什麼區別?
- 3. 什麼是「返回查看()」之間的區別「返回PartialView()」
- 4. 在Python中,通過和返回之間的區別是什麼
- 5. ||之間有什麼區別?和|在R?
- 6. sklearn的make_blobs和多元高斯之間有什麼區別?
- 7. GlobalAlloc和GlobalLock之間在JNA中的返回值有什麼區別
- 8. collection.find與回調和不回調之間有什麼區別?
- 9. 「層」和「層」之間有什麼區別?
- 10. Tableau和QlikView之間有什麼區別
- 11. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 12. @Entity和@embeddable之間有什麼區別
- 13. ContentObservable和DataSetObservable之間有什麼區別?
- 14. touchmove和gesturechange之間有什麼區別?
- 15. 這兩行之間有什麼區別?
- 16. :notification.flags和notification.defaults之間有什麼區別?
- 17. proc和lambda之間有什麼區別?
- 18. :: after和after之間有什麼區別?
- 19. read()和io.read()之間有什麼區別?
- 20. Request()和Request.Form()之間有什麼區別?
- 21. DesiredCapabilities與RequiredCapabilities之間有什麼區別?
- 22. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 23. getA()和this.getA()之間有什麼區別?
- 24. (int)和intval()之間有什麼區別?
- 25. set_value和= pandas之間有什麼區別
- 26. * zoom和zoom之間有什麼區別?
- 27. {0}和「」之間有什麼區別?
- 28. typedef和using之間有什麼區別?
- 29. 「」和「'之間有什麼區別?
- 30. STDIN和tty之間有什麼區別?