gpt4 book ai didi

python - 数据存储。未找到对象属性,尽管它存在于数据存储区中

转载 作者:行者123 更新时间:2023-11-28 16:56:48 25 4
gpt4 key购买 nike

当代码执行检查用户是否可以执行操作时,未找到 ndb.BooleanProperty(default=False) 属性。

我试过使用 ndb.StringProperty 而不是 bool 属性,但这没有任何区别。属性(property)中的其他属性得到认可。最有趣的是,如果我在 HTML 中的 jinja2 中放置一个 {{user.org_setup_done}} 标签,它会正确返回属性值,即 False。

换句话说,我知道该属性已正确创建并存储在用户实体中,因为我可以在数据存储区中看到它并在 HTML 中使用 jinja2 标记调用它。但是,当我对其进行检查时,却找不到它。

class User(ndb.Model):
"""
model for storing user information
"""
email = ndb.StringProperty(required=True) # the users email, as username
pass_hash = ndb.StringProperty(required=True) # the users hashed password
org_setup_done = ndb.BooleanProperty(default=False) # if the user has completed the org profile for creating events


class OrgCreateCompStartHandler(BaseHandler):
"""handler that lets you start creating an event by choosing series, date, name, start time and venue"""

def get(self):
try:
user = self.user_obj() # get the user object from session, returns None if no session exists

if user.org_setup_done: # check to see if the user is org_ready. If yes, continue with the event creation,
# if no then redirect to the profile page for event organisers.
# : TEMPLATE VALUES
template_values = {
'user': user,
}
# : RENDER TEMPLATE
self.render_template(ROUTE, 'org-create.html', template_values)

else:
self.redirect("/")

except Exception, e:
logging.error("ERROR is %s" % e)
logging.exception("EXC is %s" % e)
self.redirect("/oops") # unexpected error

预期结果应该是在代码检查 org_setup_done 属性为 True 后呈现 org-create.html 页面。

实际结果是以下错误:

Traceback (most recent call last):
File "C:\Users\events.py", line 2433, in get
if user.org_setup_done:
AttributeError: 'User' object has no attribute 'org_setup_done'

有没有人对此有任何想法?我真的被这个弄糊涂了。

最佳答案

user = self.user_obj()  # get the user object from session, returns None if no session exists

我认为您的 User 模型与 webapp2 的内置 User 模型发生冲突

您可以配置 webapp2 以使用您的 User 模型

webapp_app = webapp2.WSGIApplication(
config={
...
'webapp2_extras.auth': {'user_model': 'path.to.my.user_model_file.User'},
})

但是 webapp2 的 session 代码可能对 User 对象具有哪些字段/功能有一些假设,因此您需要在 中实现这些用户。您也可以让您的用户模型继承 webapp2 的模型

from webapp2_extras.appengine.auth.models import User as _webapp2_User

class User(_webapp2_User):
...

关于python - 数据存储。未找到对象属性,尽管它存在于数据存储区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57658177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com