在Django中将嵌套简单类型的Python对象渲染为HTML
将Python对象转换为HTML(表格或框架)以在Django中渲染
有没有什么建议可以帮助我遍历一个任意的Python对象属性并将其渲染为HTML?不需要调用任何方法。这个对象会包含:字符串、整数、日期时间、这些类型的列表,以及其他类似的Python对象(虽然是不同的类,但仍然是字符串、整数、日期时间、列表等)。这个对象的嵌套层级可能会有5到6层。
我想将其渲染为HTML(可以是表格、框架等),并在HTML中设置类/class和ID/id,以便将来使用CSS(在这个问题中不需要深入讨论CSS)。这里有一个简化的示例Python对象:
name : Mr sandman
addr :
street 1: 123 main st
street 2: None
city : Los angeles
state : ca
zip : 90001
events :[
date_of_birth : datetime(2013, 01, 01) ,
date_of_grad : None
]
is_married : False
has_children : None
awards:[
(award:
name : bravery
date : datetime(2010,01,01)),
(award:
name : courage
date : None ),
]
另外,将类似的JSON渲染为HTML也会很有帮助。
1 个回答
2
最简单的方法是先把你的Python对象转换成JSON格式。然后再用很多可用的JSON转HTML的工具之一来转换。
例如,你可以查看这个链接:https://github.com/bloopletech/json2html/tree/master
这里有个示例:http://json.bloople.net/#_output
因为你的Python对象里包含了日期时间类型,所以在解码JSON之前,需要先对解码器进行一些扩展。
import json
def extend_json(obj):
if isinstance(obj, date):
return str(obj)
elif isinstance(obj, datetime):
return obj.strftime("%Y-%m-%d %H:%M:%S")
elif isinstance(obj, Decimal):
return float(obj)
data = json.dumps(obj, indent=4, sort_keys=True, default=extend_json)