我试图使用应用程序引擎User对象的user_id(由User.user_id()方法返回)作为我自己的User类中的key_name。问题是它一直告诉我这是一个无效的key_name。我试过了,并使用digest()以及hexdigest()方法来减少可能的字符数,但仍然没有好结果。这是因为值太长,或者因为键名不能有某些字符?另外,我如何修改user_id使其保持唯一性,但也可用作实体的key_name?如果它使用散列,那么无法猜测user_id,则额外奖励。适用于app引擎中key_name的规则是什么?
这里就是出错代码:
def get_current_user():
return User.get(db.Key(hashlib.sha1(users.get_current_user().user_id()).hexdigest()))
我现在做一些更多的测试,concidering从意见和建议答案。
你的用户类中的Key_name是你的User类的PK吗? –
我相信有效的密钥名称包括最多500个字符的任何Unicode字符串。 'user_id()'或一个散列应该是完全有效的。我怀疑你的代码中还有其他的东西。你确定你设定了关键名称,而不是关键? –
在这一点上,我甚至没有设置关键。我试图从一个不存在的数据库中获取用户。我只为自己的用户模块实现了get_current_user方法。我将为它添加代码。 – bigblind