Django зависает при чтении данных из request.body
Допустим, у нас есть простое представление Django:
def my_view(request):
content = request.body
# some actions with content varible
response = HttpResponse('<h1>It work!</h1>')
А простой api клиент, допустим, основанный на библиотеке requests, отправляет неверно сформированные данные представления Django:
headers = dict()
headers['Accept'] = '*/*'
headers['Content-Length'] = '13409'
headers['Content-Type'] = 'application/x-compressed'
headers['Expect'] = '100-continue'
headers['Host'] = '127.0.0.1:8000'
headers['User-Agent'] = 'Api client'
headers['content-encoding'] = 'gzip'
url = 'http://127.0.0.1:8000/api'
request_body = ''
r = requests.post(
url,
data=request_body,
headers=headers
)
Как видите, request_body содержит пустую строку, но в заголовке Content-Length хранится значение 13409. Когда приходит такой запрос, Django зависает на строке, читающей request.body. Никаких исключений не происходит. Как решить эту проблему? Я не могу повлиять на клиента, поэтому единственное, что я могу сделать - это переписать представление Django. Используется Django версии 3.2.15.