Показывать тип string на веб-странице Django вместо байтов?
Я пытаюсь получить содержимое XML-файла, хранящегося в ведре S3, для отображения в виде текста в браузере. Однако оно отображается в виде чисел (байтов), а не разборчивой строки.
Мой код (views.py):
def file_content(request):
file_buffer = io.BytesIO()
s3_client = boto3.client("s3", "eu-west-1")
s3_client.download_fileobj("mybucket", "myfolder/example.xml", file_buffer)
file_content = file_buffer.getvalue()
return HttpResponse(file_content)
Что я пробовал
Я пробовал изменить эту строку:
file_content = file_buffer.getvalue()
To:
file_content = file_buffer.getvalue().decode("utf-8")
Ор:
file_content = str(file_buffer.getvalue())
Но в браузере он по-прежнему отображается как числа/байты. Содержимое файла правильно отображается как строка при использовании print() или если я проверяю type(file_content) в консоли, но в браузере этого не происходит.
Я не уверен, что идет не так, если кто-то может указать мне правильное направление, я был бы очень признателен. Спасибо.
До, я исправил это, добавив content_type к HttpResponse, так что моя функция теперь выглядит следующим образом:
def file_content(request):
file_buffer = io.BytesIO()
s3_client = boto3.client("s3", "eu-west-1")
s3_client.download_fileobj("mybucket", "myfolder/example.xml", file_buffer)
file_content = file_buffer.getvalue().decode('UTF-8')
response = HttpResponse(content_type="text/plain")
response.write(file_content)
return response