我想格式化一些XML并将其传递给Django模板。在外壳程序中,我可以使用以下代码成功创建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)


然后,仍在外壳中,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}}

最佳答案

dump只是一个调试功能。您应该使用tostring函数:

ET.tostring(root)


这将给您确切的ET.dump()打印内容,但以字符串形式显示。

如果您使用的是lxml,也可以使用

ET.tostring(root, pretty_print=True)


以获得外观更好的XML,但是如果只是要被另一个代码层使用,那么您实际上并不需要它。而且它在库存的ElementTree中不可用。

关于python - 如何将ET.dump()xml字符串从Django View 传递到模板— python django ElementTree,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20499896/

10-12 22:20