ステータスコードを返したい 204 No Content
Djangoビューから。これは、データベースを更新する自動POSTに応答するものであり、更新が成功したことを示す必要があります(クライアントをリダイレクトせずに)。
HttpResponse
他のほとんどのコードを処理するためのサブクラスがありますが、204は処理しません。
これを行う最も簡単な方法は何ですか?
ステータスコードを返したい 204 No Content
Djangoビューから。これは、データベースを更新する自動POSTに応答するものであり、更新が成功したことを示す必要があります(クライアントをリダイレクトせずに)。
HttpResponse
他のほとんどのコードを処理するためのサブクラスがありますが、204は処理しません。
これを行う最も簡単な方法は何ですか?
回答:
使用する場合 renderする、status
キーワード引数があります。
return render(request, 'template.html', status=204)
(ステータス204の場合、応答本文は存在しないはずですが、このメソッドは他のステータスコードに役立ちます。)
他の回答はほとんど機能しますが、コンテンツヘッダーがまだ含まれているため、完全に準拠したHTTP204応答は生成されません。これにより、WSGI警告が発生する可能性があり、Django WebTestなどのテストツールによって検出されます。
これは、準拠しているHTTP204応答の改善されたクラスです。(この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()