1
我想列出在我的测试GAE应用程序中输入到我的数据存储中的所有用户,并列出每个用户的用户名。然而,当我运行下面的代码,我得到一个错误说GAE数据存储查询
self.query = User.all() AttributeError: type object 'User' has no attribute 'all'
我认为self.query = User.all()
将返回所有用户在我的数据库?
我的代码如下。 在此先感谢!
PS。我知道我的用户搜索表单正在询问用户名,并且无所作为,但过滤是以后的任务 - 我只是想确保我已经先完成基本查询。
from google.appengine.ext import ndb
import webapp2
import uuid
class User(ndb.Model):
db_UID = ndb.StringProperty(indexed = True)
db_username = ndb.StringProperty(indexed = True)
db_password = ndb.StringProperty(indexed = True)
db_email = ndb.StringProperty(indexed = True)
db_resetID = ndb.StringProperty(indexed = True)
class UsersPage(webapp2.RequestHandler):
def get(self):
self.response.write('<html><body><h1>User Info Page</h1>')
self.response.write("""
<form method = "post">
Username: <input type = "textarea" name = "user_username"></input><br>
Password: <input type = "textarea" name = "user_password"></input><br>
Email address: <input type = "textarea" name = "user_email"></input><br>
<input type = "submit"></input>
</form>""")
self.response.write('</body></html>')
def post(self):
UNIQUE_ID_STRING = str(uuid.uuid1())
self.user = User(db_UID = UNIQUE_ID_STRING ,
db_username = self.request.get('user_username'),
db_password = self.request.get('user_password'),
db_email = self.request.get('user_email'))
self.user.put()
self.redirect('/user')
class UserFinder(webapp2.RequestHandler):
def get(self):
self.response.write('<html><body><h1>Search username</h1>')
self.response.write("""
<form method = "post">
Username: <input type = "textarea" name = "user_username"></input><br>
<input type = "submit"></input>
</form>""")
self.response.write('</body></html>')
def post(self):
self.query = User.all()
self.response.write('<html><body><h1>Search username</h1>')
for self.user in self.query:
self.response.write('<p>%s</p>' % self.User.db_username)
self.response.write('</body></html>')
application = webapp2.WSGIApplication([
('/user', UsersPage),
('/userfinder', UserFinder),
], debug = True)
非常感谢@Greg这样一个清晰而有用的答案!我使用了一个教程来编写查询,他们在自己的代码中使用了自我,所以我从它那里拿了它,因为我认为这是必要的。我会把它们拿出来。 我已经修改我的post方法到下面的代码,但我现在得到一个错误,说 查询= User.query() UnboundLocalError:本地变量'用户'在赋值之前引用。 我认为查询是在User类上作用的? 我的代码是现在: – user2463758
DEF后(个体经营): 查询= User.query() self.response.write( '
搜索用户名
') 用户查询: self.response的。写( '%S
'%User.db_username) self.response.write('') – user2463758尝试重命名你的变量 '用户' - 它可能与用户类冲突。 – Greg