Форматирование Json-ответов Django в шаблонах
можно ли как-то сохранить JSON-ответ в том виде, в котором он есть, а также сделать отступы в нужном формате?
Я хочу вывести list_text в шаблоне list.html, но json-ответ каждый раз получается разным. Возможно ли сохранить его фиксированным и с правильными отступами?
obj = {
list_text[0],
list_text[1],
list_text[2],
list_text[3],
list_text[4],
list_text[5],
list_text[6],
list_text[7],
}
return render(request, 'card/list.html', {'form':form, 'list_text': obj})
Я нашел похожую статью о JSON здесь: Ссылка
Но это для сериализации JSON или чего-то подобного, я хочу передать это в шаблоны.
Если вы хотите, чтобы порядок сохранялся, используйте список вместо set
obj = [
list_text[0],
list_text[1],
list_text[2],
list_text[3],
list_text[4],
list_text[5],
list_text[6],
list_text[7],
]
return render(request, 'card/list.html', {'form':form, 'list_text': obj})
Вы, вероятно, можете передать list_text
, поскольку похоже, что это список.
Теперь, чтобы получить правильные отступы в вашем шаблоне, самый простой подход - это преобразовать ваши объекты Python в строку JSON.
list_text_as_a_string = json.dumps(obj, indent=2)
return render(request, 'card/list.html', {'form':form, 'list_text': list_text_as_a_string})
Обратите внимание на indent=2
. По умолчанию json.dumps избегает лишнего белого пространства.
Теперь в вашем шаблоне простое do
<pre>{{ list_text }}</pre>
Тег pre берет предварительно отформатированный текст и отображает его как есть. (Обычно HTML игнорирует лишнее белое пространство). Он также использует шрифт фиксированной ширины, чтобы все выглядело лучше.