Gae error: AttributeError: object "NoneType" does not have attribute "user_is_member"

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?

thank

+3
source share
1 answer

You are trying to get an object by key, but an entity with that key does not exist, therefore .get () returns None. You must verify that the actual object was returned before trying to act on it, for example:

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
+6
source

Source: https://habr.com/ru/post/1744474/


All Articles