在 django 模板 [python] 中使用 json.dump 或 pprint 逐行创建一个表

Posted

技术标签:

【中文标题】在 django 模板 [python] 中使用 json.dump 或 pprint 逐行创建一个表【英文标题】:Create a table, line-by-line of a dictionary using json.dump or pprint in django template [python] 【发布时间】:2014-10-30 18:46:36 【问题描述】:

我已经为此苦苦思索了一段时间,不确定是否应该再尝试一下,或者去看医生。

我在 API 中查询 json 信息。我一直在使用请求,我正在使用的请求工具的简洁部分是您可以调用 .json() 并将其转换为 python 中的字典。好吧,现在这是棘手的部分;我以我想要的方式保存了所有数据,现在我试图以表格格式或逐行打印所有 json 数据,同时保持 json.dumps 应用的缩进,所以我可以逐行添加一些标签。 [见下面的例子]

json.dumps() 在预块中显示它时效果很好,现在我被困在如何让 django 模板重组它。

正如我在大多数 json.dumps() 示例中看到的那样:

“一”:“字符串” “b”:“字符串2” “C” : [ “对”, “对”, “呜呜” ] “d”: “另一个字典”: “another_dict_to_make_it_tricky”:“字符串!”

我正在寻找或尝试使用模板做什么,同时保留缩进。

桌子 排 行“a”:“字符串”(搜索值图标) 行“b”:“string2”(搜索值图标) 行“c”:[(可折叠) 行“是的”, 行“是的”, 行“blegh” 排 ] 行“d”:(可折叠) 行“another_dict”:(可折叠) 行“another_dict_to_make_it_tricky”:“字符串!” (搜索值图标) 排 排 排

到目前为止,我尝试的是创建一个过滤器 jsondump 以返回模板上的 json 字符串,但是当我尝试将它传递给另一个过滤器时,str_seperate 它失败了。而且我尝试了其他方法,但是在将信息返回到模板时,大部分缩进都丢失了。

[基本上; % dict_type_from_view |jsondump |str_split %]

@register.filter def jsondump(obj): 返回 json.dumps(obj,indent=4) @register.filter def str_split(obj): 返回 obj.split(',')

保持缩进最优雅的方法是什么?

【问题讨论】:

【参考方案1】:

在 json.dumps() 函数中,您必须设置 indent 属性。此外,您必须使用 '\n' 作为分隔符进行拆分,否则 Python 会执行一些神奇的空格拆分。最后一步只是将带有前导空格的字符串呈现给一些 html

你可以试试这个:

import json
import re
from django import template

register = template.Library()


@register.filter
def my_filter(value):
    string = json.dumps(value, indent=4)
    result = '<div style="font-family:monospace;">'
    for row in string.split('\n'):
        content = re.sub(r'\s4', '<span style="padding-right:1em;">&nbsp;</span>', row.rstrip())
        result += '<p>%s</p>' % content
    result += '</div>'
    return result

在模板中不要忘记使用安全,但要注意内容是否真的安全。

 my_dict|my_filter|safe 

【讨论】:

呵呵,哎呀,我在里面添加了缩进,我忘了在我的sn-p中包含它。至于分离,我试过','但'\ n'是我逃避的东西。除了我的错误之外,您发布的过滤器效果很好!出于某种原因,我不认为有一个过滤器来完成所有的工作,而不是模板端。谢谢!

以上是关于在 django 模板 [python] 中使用 json.dump 或 pprint 逐行创建一个表的主要内容,如果未能解决你的问题,请参考以下文章

python 在django中使用Mako模板

在 django 模板中使用 python 字符串格式化

如何在 Django 模板上传递 Python 列表并在 JavaScript 中使用它?

python使用django框架模板的基本使用

使用 For 循环的 Django Python 模板嵌套列表

Python学习---django模板继承180123