gae 错误:AttributeError:'NoneType' 对象没有 'user_is_member' 属性

3 投票
1 回答
4546 浏览
提问于 2025-04-15 22:27
class Thread(db.Model):
  members = db.StringListProperty()

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

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

但是错误是:

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'

为什么?

谢谢

1 个回答

6

你正在尝试通过一个键来获取某个实体,但没有找到对应的实体,所以 .get() 返回了 None。这意味着你没有得到任何东西。在你对这个返回的结果进行操作之前,需要先检查一下它是否有效,像这样:

thread = Thread.get(db.Key.from_path('Thread', int(id)))
if thread:
  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

撰写回答