【问题标题】:How to pass ET.dump() xml string from a Django view to a template -- python django ElementTree如何将 ET.dump() xml 字符串从 Django 视图传递到模板 -- python django ElementTree
【发布时间】:2013-12-28 06:57:57
【问题描述】:

我想格式化一些 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': ET.dump(root) 将它作为{{xml_items}} 传递,我还尝试将ET.dump(root) 分配给一个变量并像'xml_items': xml_items 一样传递它。

在这两种情况下,模板都会为{{xml_items}} 输出None

【问题讨论】:

    标签: python django django-templates django-views elementtree


    【解决方案1】:

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

    ET.tostring(root)
    

    这将为您提供 ET.dump() 打印的确切内容,但作为字符串。

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

    ET.tostring(root, pretty_print=True)
    

    为了获得更好看的 XML,但如果这只是被另一个代码层使用,那么无论如何你都不会真的想要它。并且它在 Stock ElementTree 中不可用。

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2015-07-07
      • 2018-02-10
      • 2021-10-15
      • 1970-01-01
      • 2017-04-26
      • 2016-09-28
      • 2020-03-19
      • 2019-02-16
      相关资源
      最近更新 更多