There are apparently two different ways to return a 404 error in Django: by returning a HttpResponseNotFound
object or by raising an Http404
exception. While I'm using the former in my project, it seems that Django's internal views are mostly using the latter. Apart from the "Exception is exceptional" mantra, what's the difference between both ways and which should I be using?
An HttpResponseNotFound
is just like a normal HttpResponse
except it sends error code 404. So it's up to you to render an appropriate 404 page in that view, otherwise the browser will display its own default.
Raising an Http404
exception will trigger Django to call its own 404 error view. Actually, this does little more than render the 404.html template and send it - using HttpResponseNotFound
, in fact. But the convenience is that you're then specifying the template (and view, if you like) in one place.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With