模板中的 Django Json 响应格式

Posted

技术标签:

【中文标题】模板中的 Django Json 响应格式【英文标题】:Django Json Response formatting in templates 【发布时间】:2021-11-05 19:16:50 【问题描述】:

是否有可能以某种方式保持 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 序列化或类似的东西,我希望将其传递给模板。

【问题讨论】:

【参考方案1】:

如果您希望维护订单,请使用列表而不是 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 会避免任何额外的空白。

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

<pre> list_text </pre>

pre tag 采用预先格式化的文本并按原样呈现。 (通常 HTML 会忽略额外的空白)。它还使用固定宽度的字体,所以看起来更好。

【讨论】:

以上是关于模板中的 Django Json 响应格式的主要内容,如果未能解决你的问题,请参考以下文章

为 Django 模板中的 Highcharts 从 Pandas 数据帧格式化 JSON

api网关中的响应模板不以美化格式返回json

与 AngularJS 一起使用时,Django 模板不呈现 JSON 响应

在Django模板中使用json数据

如何摆脱 Python json.dumps 中的“quot”

使用 django 模板将 json 填充到 html