Как я могу вернуть код состояния HTTP 204 из представления Django?


Я хочу вернуть код состояния 204 No Content из вида Django. Это в ответ на автоматическое сообщение, которое обновляет базу данных, и мне просто нужно указать, что обновление было успешным (без перенаправления клиента).

есть подклассы HttpResponse для обработки большинства других кодов, а не 204.

какой самый простой способ сделать это?

4 54

4 ответа:

return HttpResponse(status=204)

либо что Стив Мэйн ответил, или создать свой собственный путем создания подклассов класса HttpResponse:

from django.http import HttpResponse

class HttpResponseNoContent(HttpResponse):
    status_code = 204

def my_view(request):
    return HttpResponseNoContent()

при использовании оказать, есть status аргумент сайта.

return render(request, 'template.html', status=204)

(обратите внимание, что в случае состояния 204 не должно быть ответной реакции организма, но этот метод полезен для других кодов состояния.)

если вы возвращаете render(), согласно документации Django, render() принимает status как необязательный параметр, и его значение по умолчанию - это 200.

поэтому, если вы хотите вернуть пользовательский статус, используйте:

def my_view(request):
    return render(request,
                  'your-template.html',
                   context=your_context,
                   status=204) # your custom status in this case 204