我想204 No Content
从Django视图返回状态代码。这是对更新数据库的自动POST的响应,我只需要指示更新成功(无需重定向客户端)即可。
有的子类HttpResponse
可以处理大多数其他代码,但不能处理204。
最简单的方法是什么?
Answers:
使用render时,有一个status
关键字参数。
return render(request, 'template.html', status=204)
(请注意,对于状态204,不应有响应主体,但此方法对其他状态代码很有用。)
其他答案大多数情况下都起作用,但是它们仍未生成完全兼容的HTTP 204响应,因为它们仍包含内容标头。这可能会导致WSGI警告,并被Django Web Test之类的测试工具识别。
这是用于HTTP 204响应的改进类。(基于此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()