我正在编写一个Django视图,它有时从数据库获取数据,有时从外部API获取数据。在
当它来自数据库时,它是一个Django模型实例。属性必须用点表示法访问。在
数据来自API,是一个字典,通过下标表示法进行访问。在
在这两种情况下,都会对数据进行一些处理。在
我想避免
if from_DB:
item.image_url='http://example.com/{0}'.format(item.image_id)
else:
item['image_url']='http://example.com/{0}'.format(item['image_id'])
我想找一种更优雅、更干练的方式来做这件事。在
有没有一种方法可以通过对字典或对象有效的键来获取/设置?在
您可以使用Bunch class,它将字典转换为接受点表示法的内容。在
我不知道这会产生什么影响,但是我会向django模型添加一个方法,该方法将字典读入其自身,这样您就可以通过模型访问数据。在
在JavaScript中,它们是等价的(通常很有用;如果您不知道您正在进行web开发,我会提到它),但是在Python中它们是不同的-}。在
[items]
与{使用
__getattr__
编写允许通过属性访问的内容很容易:然后像使用
dict
(它将接受一个dict
作为参数,因为它扩展了dict
),但是你可以做类似item.image_url
的操作,它会将它映射到item.image_url
,获取或设置。在相关问题 更多 >
编程相关推荐