在 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;"> </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 逐行创建一个表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 模板上传递 Python 列表并在 JavaScript 中使用它?