簡體   English   中英

NDB AppEngine NoneType錯誤

[英]ndb appengine nonetype error

我在使用Google App Engine時遇到問題。 我正在嘗試實現一個Person ndb模型,該模型將存儲一個人的基本信息。 但是,當我嘗試在數據庫中查詢密鑰時,在回溯中始終出現Nonetype錯誤:

File "xxxx", line 104, in get
    parent = ndb.Key('Person', users.get_current_user().email())
AttributeError: 'NoneType' object has no attribute 'email'

這是與錯誤相關的代碼:

這是我聲明模型的地方

class Person(ndb.Model):
    dev_id = ndb.StringProperty()
    num_readings = ndb.IntegerProperty()

在這里,我只是想稍后在同一文件中使用它:

class MainPageLI(webapp2.RequestHandler):
# Front page for those logged in
def get(self):
    user = users.get_current_user()
    parent = ndb.Key('Person', users.get_current_user().email())
    person = parent.get()

    if person == None:
        person = Person(id=users.get_current_user().email())

        person.temperature_unit = 'celsius'

        person.time_zone = 8.00

        """person.notify_type = ['by-time']
        person.notify_time_value = 4
        person.notify_time_unit = 'days'
        person.notify_parameters = ['by-temp']
        person.notify_temperature_abe = 'exactly'
        person.notify_temperature_value = 20
        person.notify_temperature_unit = 'celsius'
        person.notify_light_abe = 'above'
        person.notify_light_value = 90
        person.notify_motion = 'present'"""

        person.num_readings = 5

        #person.history_log_value = 2
        #person.history_log_unit = 'days'

        person.put()

    if user:  # signed in already
        params = urllib.urlencode({'username':users.get_current_user().nickname()})
        template_values = {
            'user_mail': users.get_current_user().email(),
            'logout': users.create_logout_url(self.request.host_url),
            'nickname': users.get_current_user().nickname(),
        }
        template = jinja_environment.get_template('frontuser.html')
        self.response.out.write(template.render(template_values))
    else:
        self.redirect(self.request.host_url)

注意:所有縮進在文件中都是正確的,只是笨拙地復制粘貼了(特別是MainPageLI段,文件的前幾行在選項卡中被選中)。

任何和所有幫助將不勝感激! 謝謝 :)

您需要移動if user: # signed in already檢查更高級別,然后再users.get_current_user().email() (您可以用user.email() BTW替換,因為您已經在上面獲得了user )。

這是您的問題:

users.get_current_user()  # returns None, and you can't call .email on None.
# check if it returns something usable first. :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM