我想要实现的是从webapp2.cached属性获取用户对象 . 我有一个在我的请求处理程序中定义的方法,它给了我当前用户 .
@webapp2.cached_property
def current_user(self):
user_dict = self.auth.get_user_by_session()
return self.auth.store.user_model.get_by_id(user_dict['user_id'])
我想获取用户对象,因为它是我的一个模型的UserProperty(),如下所示:
class CountryImage(db.Model):
image = db.BlobProperty()
user = db.UserProperty()
country = db.ReferenceProperty(Country)
approved = db.BooleanProperty(default=False)
现在,当上传表单发布时,除了在数据存储区中显示为“无”的“用户”之外,一切正常 .
我在交互式控制台中使用它时发现的可能原因是current_user方法传递Web缓存属性而不是实际用户对象 .
例如:
< webapp2.cached_property object at 0xb46aee8c >
现在我的问题是检索用户对象的最佳方法是什么?在此先感谢您的帮助 .
Amyth
PS:编辑:
以下是我尝试将图像存储在数据存储区中的代码:
NewImg = models.CountryImage()
NewImg.image = self.request.get('image')
NewImg.user = self.current_user
NewImg.country = models.Country.all().filter("url_name =", country).get()
continue_url = self.request.url
NewImg.put()
PS:
只是添加我也尝试使用“users.get_current_user()”方法,它也返回“无”
3 回答
谢谢你的回复,但我已经把它推了出来 . 如果您使用
webapp2_extras
中的User
模型(这是appengine.api.users
的用户模型的扩展名),您可以获得如下用户要么
我很好奇,国家形象是用户上传的吗?或者你作为资源管理这些?
如果没有,你最好在用户模型上使用StringProperty,然后引用一个字符串路径到一个静态图像资产,并节省额外的数据库查找
users.get_current_user()应该是要走的路,但这需要用户先登录 . 您是否尝试支持匿名用户?