1

我正在使用 Django 在 Django 中加载一个 JSON 字符串simplejson,因此:

obj = json.loads('{"name": "joe"}')
person = obj.name

这会引发错误:

'dict' object has no attribute 'name'

但是当我传递obj给视图模板并通过 打印出来时{{ obj.name }},它可以工作!为什么?

4

2 回答 2

7

我不确定它的 Django 方面是如何工作的,但是您从中获得的对象json.loads是一个 Pythondict对象。这意味着它没有键的属性,但您可以像访问任何其他字典一样访问它们:

obj = json.loads('{"name": "joe"}')
person = obj['name']
于 2009-10-27T23:47:38.417 回答
4

json.loads将 json 加载到 python 字典中。所以你必须像字典一样访问它,即data['key'].

现在,在 django 模板方面,查看官方django 模板文档。

直接引用:

从技术上讲,当模板系统遇到点时,它会按以下顺序尝试以下查找:

  • 字典查找
  • 属性查找
  • 方法调用
  • 列表索引查找

所以基本上,django 模板允许您使用data.key语法访问字典项。

于 2009-10-28T00:03:21.147 回答