向用户添加属性到谷歌应用引擎
在Google App Engine(使用Python)中,保存用户资料的最佳方法是什么呢?
我为了解决这个问题,创建了一个新的模型,并使用了一个用户属性。但是在请求用户资料时,我需要做一些像下面这样的操作:
if user:
profile = Profile.all().filter('user =', user).fetch(1)
if profile:
property = s.get().property
有没有什么好的建议呢?
3 个回答
1
这不是一个解决方案,而是一个警告。
用户的值并不是一个独特且稳定的用户标识符。而且,user_id这个属性只存在于谷歌用户中,对于OpenId用户是没有的。所以不要相信这个解决方案。
1
不,这个方法是相当正确的(不过你可能还想把一些用户资料存储在缓存里,这样会更快;-)。这样做会很快,因为在user
字段上会有一个索引。如果你是想问能不能修改谷歌提供的用户模型,那答案是肯定不能。
4
如果你把用户的用户ID作为用户资料的关键名称,这样你就可以通过Profile.get_by_key_name()来获取用户资料,这样比先查询再获取要快很多。
把用户ID作为关键的一部分放在缓存里,这样访问用户资料会更快。