我正在使用 Django 在 Django 中加载一个 JSON 字符串simplejson
,因此:
obj = json.loads('{"name": "joe"}')
person = obj.name
这会引发错误:
'dict' object has no attribute 'name'
但是当我传递obj
给视图模板并通过 打印出来时{{ obj.name }}
,它可以工作!为什么?
我正在使用 Django 在 Django 中加载一个 JSON 字符串simplejson
,因此:
obj = json.loads('{"name": "joe"}')
person = obj.name
这会引发错误:
'dict' object has no attribute 'name'
但是当我传递obj
给视图模板并通过 打印出来时{{ obj.name }}
,它可以工作!为什么?
我不确定它的 Django 方面是如何工作的,但是您从中获得的对象json.loads
是一个 Pythondict
对象。这意味着它没有键的属性,但您可以像访问任何其他字典一样访问它们:
obj = json.loads('{"name": "joe"}')
person = obj['name']
json.loads
将 json 加载到 python 字典中。所以你必须像字典一样访问它,即data['key']
.
现在,在 django 模板方面,查看官方django 模板文档。
直接引用:
从技术上讲,当模板系统遇到点时,它会按以下顺序尝试以下查找:
- 字典查找
- 属性查找
- 方法调用
- 列表索引查找
所以基本上,django 模板允许您使用data.key
语法访问字典项。