2013-12-10 47 views
1

我想格式化一點XML並將它傳遞給一個Django模板。在shell中,我能夠用下面的代碼成功創建XML字符串:如何將ET.dump()xml字符串從Django視圖傳遞到模板 - Python的Django ElementTree

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': ET.dump(root){{xml_items}}和我也曾嘗試分配ET.dump(root)給一個變量並將其傳遞等'xml_items': xml_items

在這兩種情況下,模板輸出None{{xml_items}}

回答

3

dump僅僅是一個調試功能。您應該使用tostring功能:

ET.tostring(root) 

,這將給你正是ET.dump()打印,但作爲一個字符串。

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

ET.tostring(root, pretty_print=True) 

得到一個更好看的XML,但如果僅僅是將另一個代碼層被消耗掉,那麼你真的不反正就是這樣。它在ElementTree股票中不可用。

相關問題