Django模板渲染JSON响应如何保持格式固定且正确缩进
实现方案
完全可以实现,你只需要在后端提前将Python对象序列化为带固定缩进的JSON字符串,再传递到模板渲染即可,操作如下:
- 后端视图层修改代码
首先导入Python内置的json模块,使用json.dumps()方法的indent参数指定缩进空格数,设置sort_keys=False避免键被自动重排,保证输出格式固定:
import 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], } # 序列化为带4空格缩进、保持键顺序的JSON字符串,有中文内容可保留ensure_ascii=False参数 formatted_json = json.dumps(obj, indent=4, sort_keys=False, ensure_ascii=False) return render(request, 'card/list.html', {'form':form, 'list_text': formatted_json})
- 模板层渲染调整
在list.html中渲染时,需要加上safe过滤器关闭Django的自动HTML转义,避免引号等字符被转义破坏格式。如果需要在页面上可视化展示JSON格式,用pre标签包裹即可:
<pre>{{ list_text|safe }}</pre>
如果是要把格式化后的JSON赋值给前端JS变量,直接编写即可:
<script> const renderData = {{ list_text|safe }}; </script>
注意:如果你的JSON内容包含用户输入的不可信数据,需要先做好XSS过滤再使用safe过滤器,避免安全风险。
内容的提问来源于stack exchange,提问作者senarijit1618
相关产品推荐
相关产品推荐

