gae错误:AttributeError:'NoneType'对象没有属性'user_is_member' [英] gae error:AttributeError: 'NoneType' object has no attribute 'user_is_member'

查看:146
本文介绍了gae错误:AttributeError:'NoneType'对象没有属性'user_is_member'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  class Thread(db.Model):
members = db.StringListProperty()

def user_is_member(self,user):
返回str(用户)in self.members

  thread = Thread.get(db.Key.from_path('Thread',int(id)))
is_member = thread.user_is_member(user)

但是错误是:

  Traceback(最近一次调用最后一次):
文件D:\程序文件\Google\google_appengine\google\appengine\ext\webapp\__init __。py ,第511行,在__call__
handler.get(* groups)
文件D:\程序文件\Google\google_appengine\google\appengine\ext\webapp\util .py,第62行,在check_login
handler_method(self,* args)
文件D:\zjm_code\forum_blog_gae\main.py,第222行,获取
is_member = thread.user_is_member(user)
AttributeError:'NoneType'o bject没有属性'user_is_member'

为什么?

感谢

解决方案

您试图通过密钥获取实体,但没有实体具有该密钥。 get()返回None。您需要检查一个有效的实体是否在尝试执行之前返回,如下所示:

  thread = Thread.get db.Key.from_path('Thread',int(id)))
如果线程:
is_member = thread.user_is_member(user)
else:
is_member = False

或等效:

  thread = Thread.get(db.Key.from_path('Thread',int(id)))
is_member = thread.user_is_member(user)if thread else False


class Thread(db.Model):
  members = db.StringListProperty()

  def user_is_member(self, user):
    return str(user) in self.members

and

thread = Thread.get(db.Key.from_path('Thread', int(id)))
is_member = thread.user_is_member(user)

but the error is :

Traceback (most recent call last):
  File "D:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 511, in __call__
    handler.get(*groups)
  File "D:\Program Files\Google\google_appengine\google\appengine\ext\webapp\util.py", line 62, in check_login
    handler_method(self, *args)
  File "D:\zjm_code\forum_blog_gae\main.py", line 222, in get
    is_member = thread.user_is_member(user)
AttributeError: 'NoneType' object has no attribute 'user_is_member'

why ?

thanks

解决方案

You're attempting to fetch an entity by key, but no entity with that key exists, so .get() is returning None. You need to check that a valid entity was returned before trying to act on it, like this:

thread = Thread.get(db.Key.from_path('Thread', int(id)))
if thread:
  is_member = thread.user_is_member(user)
else:
  is_member = False

or, equivalently:

thread = Thread.get(db.Key.from_path('Thread', int(id)))
is_member = thread.user_is_member(user) if thread else False

这篇关于gae错误:AttributeError:'NoneType'对象没有属性'user_is_member'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆