title: What's the difference between returning a `HttpResponseNotFound` and raising a `Http404` in Django?
body: <p>There are apparently two different ways to return a 404 error in Django: by returning a <code>HttpResponseNotFound</code> object or by raising an <code>Http404</code> 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?</p>