Django Json 模板中的响应格式

Django Json Response formatting in templates

是否有可能以某种方式保持 JSON 响应原样并将其缩进为正确的格式?

我想在我的 list.html 模板中呈现 list_text,但是 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 文章:Link

但它用于 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 避免任何额外的白色 space.

现在在你的模板中简单地做

<pre>{{ list_text }}</pre>

pre tag 采用预先格式化的文本并按原样呈现。 (通常 HTML 忽略多余的白色 space)。它还使用固定宽度的字体,因此看起来更好。