这是我的代码.我试图将xml字符串转换为python列表,以便在html模板中显示.
self.task_xml = "<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0">
<object model="task.task" pk="31">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="32">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="33">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
<object model="task.task" pk="34">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
</django-objects>"
58 self.xmlData = ET.fromstring(self.db.task_xml)
59
60 self.task_list = []
61 taskList = []
62 for obj in self.xmlData.iter("object"):
63 parent_task_id = obj.find("field[@name='parent_task_id']").text
64 if parent_task_id == EMPTY_UUID:
65 taskList.append({'id': obj.get("pk"),
66 'name': obj.find("field[@name='name']").text,
67 'parent_task_id': parent_task_id ,
68 })
69 # Apprend taskList:
70 for task in taskList:
71 taskViewModel = TaskViewModel(task.id, True)
72 self.task_list.append(taskViewModel)
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
'dict' object has no attribute 'id'
Run Code Online (Sandbox Code Playgroud)
它是第71行的task.id.
你觉得我在第65行遇到了这个问题:
'id': obj.get("pk"
Run Code Online (Sandbox Code Playgroud)
Ana*_*mar 22
您正在错误地访问字典.你需要使用带字符串的下标'id',例子 -
taskViewModel = TaskViewModel(task['id'], True)
Run Code Online (Sandbox Code Playgroud)
小智 9
当用点“. ”访问字典中的“id”时,我遇到了同样的错误。像JavaScript一样,如下所示,因为除了Python之外,我也经常使用JavaScript:
user = {"id": 1, "name": "John"}
print(user.id) # Error
Run Code Online (Sandbox Code Playgroud)
因此,我用括号“[]”访问“id”,如下所示,然后错误得到解决:
user = {"id": 1, "name": "John"}
print(user["id"]) # 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42865 次 |
| 最近记录: |