请求该实体的正确方法是什么? Python 和 GQL
What is the proper way to request this entity? Python and GQL
我正在尝试查看 post 函数中的用户名变量是否与 accountsArchive 实体中的用户名匹配。
我认为问题在于 user.username 不是引用用户名实体的正确方式。另外,上面的查询可能有问题。查看两个用户名是否匹配的正确方法是什么?
Python
class accountsArchive(db.Model):
# The username entity
username = db.StringProperty(required = True)
password = db.TextProperty(required = True)
email = db.StringProperty(required = True)
dateJoined = db.DateTimeProperty(auto_now_add = True)
class loginPage(Handler):
def post(self):
# The username variable
username = self.request.get("username")
password = self.request.get("password")
# The query
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
user.username = :name", name=username)
# This is how I tried to check if the two usernames matched
if username == user.username:
# Do stuff
您的代码中有很多问题。
首先
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
user.username = :name", name=username)
不正确 - 您应该返回并重新阅读文档 https://cloud.google.com/appengine/docs/python/datastore/gqlreference?hl=en
这个查询应该是
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
username = :name", name=username)
下一个。
这行代码的结果是 GqlQuery class 的一个实例,而不是用户或您可能期望的用户列表。参见 https://cloud.google.com/appengine/docs/python/datastore/gqlqueryclass?hl=en
您现在必须获取结果 and/or 遍历它们。
例如
for u in user.run():
if u.username == username:
# then do something
但是你有一个问题。这其中没有任何内容会限制系统为单个唯一用户。因此,如果您有多个用户使用相同的用户名,您会怎么做。
一些评论。
您可以使用用户名作为 accountsArchive 的键,这意味着您只需使用获取而不是查询。
其次,如果您是 appengine 的新手并且没有现有的代码库,请开始使用 ndb。
我正在尝试查看 post 函数中的用户名变量是否与 accountsArchive 实体中的用户名匹配。
我认为问题在于 user.username 不是引用用户名实体的正确方式。另外,上面的查询可能有问题。查看两个用户名是否匹配的正确方法是什么?
Python
class accountsArchive(db.Model):
# The username entity
username = db.StringProperty(required = True)
password = db.TextProperty(required = True)
email = db.StringProperty(required = True)
dateJoined = db.DateTimeProperty(auto_now_add = True)
class loginPage(Handler):
def post(self):
# The username variable
username = self.request.get("username")
password = self.request.get("password")
# The query
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
user.username = :name", name=username)
# This is how I tried to check if the two usernames matched
if username == user.username:
# Do stuff
您的代码中有很多问题。
首先
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
user.username = :name", name=username)
不正确 - 您应该返回并重新阅读文档 https://cloud.google.com/appengine/docs/python/datastore/gqlreference?hl=en
这个查询应该是
user = db.GqlQuery("SELECT * FROM accountsArchive WHERE
username = :name", name=username)
下一个。
这行代码的结果是 GqlQuery class 的一个实例,而不是用户或您可能期望的用户列表。参见 https://cloud.google.com/appengine/docs/python/datastore/gqlqueryclass?hl=en
您现在必须获取结果 and/or 遍历它们。
例如
for u in user.run():
if u.username == username:
# then do something
但是你有一个问题。这其中没有任何内容会限制系统为单个唯一用户。因此,如果您有多个用户使用相同的用户名,您会怎么做。
一些评论。
您可以使用用户名作为 accountsArchive 的键,这意味着您只需使用获取而不是查询。
其次,如果您是 appengine 的新手并且没有现有的代码库,请开始使用 ndb。