django - 姜戈。休息框架。如何在 XML 中添加对象 ID?
问题描述
在 DRF 中,我创建了 XML,其中我需要将对象 id 分配给主标记它应该如下所示:
<offer internal-id="Object ID">
<type></type>
<category></category>
<url></url>
</offer>
我有一个问题,offer tag
因为我不知道如何将对象 ID 插入其中。嵌套标签生成完美,它们没有问题。这是我的views.py
:
class ZemlaXMLRenderer(XMLRenderer):
root_tag_name = 'feed'
item_tag_name = 'offer'
def _to_xml(self, xml, data):
if isinstance(data, (list, tuple)):
for item in data:
xml.startElement(self.item_tag_name, {'internal-id': 'Object ID'})
self._to_xml(xml, item)
xml.endElement(self.item_tag_name)
super()._to_xml(xml, data)
理想情况下,输出应该是以下结构:
<offer internal-id="1">
<type></type>
<category></category>
<url></url>
</offer>
<offer internal-id="2">
<type></type>
<category></category>
<url></url>
</offer>
感谢!
解决方案
我找到了我的问题的解决方案。结果很简单:
class ZemlaXMLRenderer(XMLRenderer):
root_tag_name = 'feed'
item_tag_name = 'offer'
def _to_xml(self, xml, data):
if isinstance(data, (list, tuple)):
for item in data:
xml.startElement(self.item_tag_name, {'internal-id': str(item['id'])})
self._to_xml(xml, item)
xml.endElement(self.item_tag_name)
super()._to_xml(xml, data)
之后internal-id
,我加了str(item ['id'])
。现在每个offer
标签都有自己的id
推荐阅读
- javascript - 在 javascript 类声明中,在构造函数和主体中声明方法有什么区别?
- javascript - 将 Vue2 CLI 转换为 Vite
- reactjs - react.js 事件处理程序未返回更新的数据
- multithreading - Rust 中多个线程对非重叠非连续索引的无锁处理
- python - 如何使用 move_base 包在 ros 中移动多个机器人
- ssh - vmware esxi 不允许的 Mac 地址
- java - 修改什么使其使用方法实现模块化
- javascript - 在javascript中执行函数后如何执行一些语句
- php - Laravel Spark - 定义免费计划
- html2canvas - html2canvas 边框图像不呈现,替代方案?