我想格式化一些XML并将其传递给Django模板。在shell中,我能够使用以下代码成功创建XML字符串:
locations = Location.objects.all()
industries = Industry.objects.all()
root = ET.Element("root")
for industry in industries:
doc = ET.SubElement(root, "industry")
doc.set("name", industry.text)
for location in locations:
if industry.id == location.company.industry_id:
item = ET.SubElement(doc, "item")
latitude = ET.SubElement(item, "latitude")
latitude.text = str(location.latitude)
longitude = ET.SubElement(item, "longitude")
longitude.text = str(location.longitude)
然后,仍然在shell中,ET.dump(root)
输出我期望的XML。
但是,如何使用ET.dump(root)
将XML字符串从Django视图传递到模板文件?
我尝试使用{{xml_items}}
将其作为'xml_items': ET.dump(root)
传递,我也尝试将ET.dump(root)
分配给变量并将其传递给'xml_items': xml_items
。
在这两种情况下,模板都会为None
{{xml_items}}
答案 0 :(得分:4)
dump
只是一个调试功能。您应该使用tostring
函数:
ET.tostring(root)
它将为您提供ET.dump()打印的确切内容,但作为字符串。
如果你正在使用lxml,你也可以使用
ET.tostring(root, pretty_print=True)
以获得更好看的XML,但如果这只是由另一个代码层使用,那么你真的不想要那样。它在ElementTree中没有。