Las otras respuestas funcionan en su mayoría, pero no producen respuestas HTTP 204 totalmente compatibles, porque todavía contienen un encabezado de contenido. Esto puede resultar en advertencias WSGI y es detectado por herramientas de prueba como Django Web Test.
Aquí hay una clase mejorada para una respuesta HTTP 204 que es compatible. (basado en este ticket de Django ):
from django.http import HttpResponse
class HttpResponseNoContent(HttpResponse):
"""Special HTTP response with no content, just headers.
The content operations are ignored.
"""
def __init__(self, content="", mimetype=None, status=None, content_type=None):
super().__init__(status=204)
if "content-type" in self._headers:
del self._headers["content-type"]
def _set_content(self, value):
pass
def _get_content(self, value):
pass
def my_view(request):
return HttpResponseNoContent()