31👍
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.
5👍
In addition to what Daniel said, raising an Http404
exception can be more flexible in that it allows you to generate a 404 e.g. from a helper function deeper in your call stack (possibly one that usually returns a non-HttpResponse
type) and rely on Python’s exception propagation instead of having to create a HttpResponseNotFound
and manually pass it back up to where you were originally crafting your response.
- [Django]-How can I modify Procfile to run Gunicorn process in a non-standard folder on Heroku?
- [Django]-Getting 'str' object has no attribute 'get' in Django
- [Django]-Django REST Framework (DRF): TypeError: register() got an unexpected keyword argument 'base_name'
2👍
In addtion to what Daniel and esmail said, for reference, this is literally the definition of HttpResponseNotFound
Django (v1.8):
class HttpResponseNotFound(HttpResponse):
status_code = 404
And for good measure, the definition of Http404
:
class Http404(Exception):
pass
- [Django]-How to manually assign imagefield in Django
- [Django]-Django Reverse with arguments '()' and keyword arguments '{}' not found
- [Django]-Bulk create model objects in django