gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:50 24 4
gpt4 key购买 nike

一段时间以来,我一直在为此苦思冥想,不确定是否应该继续努力,或者去看医生。

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

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

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

    {        "a" :"string"        "b" :"string2"        "c" : [            "yup",            "yup",            "blegh"        ]        "d" : {            "another_dict": {                "another_dict_to_make_it_tricky" : "string!"            }        }    }

以及我正在寻找或尝试在保留缩进的同时使用模板执行的操作。

    table    row {    row    "a" :"string"  (search-value-icon)    row    "b" :"string2" (search-value-icon)    row    "c" : [        (collapsible)    row        "yup",    row        "yup",    row        "blegh"    row    ]    row    "d" : {        (collapsible)    row        "another_dict": {               (collapsible)        row            "another_dict_to_make_it_tricky" : "string!" (search-value-icon)    row        }    row    }    row }

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

[本质上; {% dict_type_from_view |jsondump |str_split %}]

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

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

最佳答案

在 json.dumps() 函数中,您必须设置缩进属性。此外,您还必须使用 '\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'\s{4}', '<span style="padding-right:1em;">&nbsp;</span>', row.rstrip())
result += '<p>%s</p>' % content
result += '</div>'
return result

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

{{ my_dict|my_filter|safe }}

关于javascript - 在 django 模板 [python] 中使用 json.dump 或 pprint 逐行创建一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25692233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com