当前位置: 首页 > 知识库问答 >
问题:

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

尉迟明辉
2023-03-14

我已经有一段时间在桌子上磕磕碰碰了,不确定我是应该再试试,还是去看医生。

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

json。dumps()在以预块的形式显示它时工作得非常出色,现在我要学习如何让django模板重新构造它。

正如我在大多数json示例中看到的那样。转储():

    {
        "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 }

到目前为止,我所尝试的,是创建一个过滤器jsonrey来返回模板上的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(',')

保存压痕最优雅的方法是什么?

共有1个答案

苏翰学
2023-03-14

在json中。函数,您必须设置缩进属性。此外,您还必须使用“\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

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

{{ my_dict|my_filter|safe }}
 类似资料:
  • 问题内容: 我正在尝试将服务器端Ajax响应脚本转换为,但显然无法正常工作。 这是服务器端脚本: 这是转换后的代码 我正在使用simplejson对Python列表进行编码(因此它将返回JSON数组)。我还不能弄清楚问题所在。但是我认为我对“回声”做错了。 问题答案: 我通常使用字典,而不是列表来返回JSON内容。 在Django 1.7之前的版本中,你将像这样返回它: 对于Django 1.7+

  • 问题内容: 我正在尝试将服务器端Ajax响应脚本转换为Django HttpResponse,但显然无法正常工作。 这是服务器端脚本: 这是转换后的代码 我正在使用simplejson对Python列表进行编码(因此它将返回JSON数组)。我还不能弄清楚问题所在。但是我认为我对“回声”做错了。 问题答案: 我通常使用字典,而不是列表来返回JSON内容。 在Django 1.7之前的版本中,您将像这

  • 问题内容: 我想使用Django模板发送HTML电子邮件: 我找不到任何有关的信息,而django-mailer仅发送HTML模板,而没有动态数据。 如何使用Django的模板引擎生成电子邮件? 问题答案: 从docs,要发送HTML电子邮件,你想使用其他内容类型,如下所示: 你可能需要两个用于电子邮件的模板-一个看起来像这样的纯文本模板,存储在你的模板目录下: 还有一个HTMLy,存放在以下位置

  • 问题内容: 我认为: 如何将 地理数据 “处理” /转换为JSON并将其传递到模板,以便像数组一样“循环”通过它? 我认为我可以这样做是对的吗?如果没有,请提出更好的解决方案。 谢谢! 更新 我认为JSON无法逃脱?如何在json字符串中转义特殊字符?我不断收到换行错误。 对于PHP,我将使用json_encode()进行修复。 问题答案: 您可以使用内置模块: 然后,您可以简单地将结果字符串嵌入

  • 创建一个仪表板 如何创建一个仪表板: 点击侧面导航中的 Dashboard 。您如果之前没有浏览过仪表板,Kibana 会显示一个起始页,在这个页面您可以点击 + 。否则,点击 Dashboard 返回起始页。 想添加可视化结果到仪表板,点击 Edit 进入编辑模式。全新的仪表板将自动处于编辑模式。 一旦进入编辑模式,点击 Add 并选择一个可视化结果。如果您有很多可视化结果,您可以敲入 过滤条件

  • 问题内容: 我正在构建一个支持票证跟踪应用程序,并希望在一个页面上创建一些模型。票证通过ForeignKey属于客户。注释也通过ForeignKey属于票证。我想选择一个客户(这是一个单独的项目),或者创建一个新的客户,然后创建一个工单,最后创建一个分配给新工单的便笺。 由于我是Django的新手,因此我倾向于反复工作,每次尝试新功能。我玩过ModelForms,但是我想隐藏一些字段并进行一些复杂