Форматирование 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 игнорирует лишнее белое пространство). Он также использует шрифт фиксированной ширины, чтобы все выглядело лучше.

Вернуться на верх