我创建了一个符合留言板教程的数据存储对象:
class myDS(ndb.Model):
a = ndb.StringProperty(indexed=True)
我有一个处理程序来访问它并更新是:
class Handler1:
my_ds = myDS()
my_ds.a = "abc" #Trying to update the value
class Handler2:
my_ds = myDS()
self.response.write(my_ds.a) #prints None although I changed the value in Handlers1
def main():
application = webapp.WSGIApplication([
('/set', Handler1),
('/get', Handler2])
我打电话:
Myapp.com/set
Myapp.com/get : Prints None (Didn't update to "abc")
为什么不更新的价值? 如何更新处理程序?
答案 0 :(得分:0)
云数据存储区(GCD)stores data objects as entities,可能包含一个或多个属性。在您的情况下,属性值类型是一个字符串' abc'。但是,每个实体都由一个密钥标识,该密钥是应用程序数据存储区中的唯一标识符。
因此,在您的情况下,您需要为对象my_ds创建一个键,并定义一个模型类。这可能是Handler1(例如class Handler1(ndb.Model): #your code
),它定义了您要调用的属性。
此外,如果不使用put()函数(例如my_ds.put()
),则无法更新值。为了使用第二个处理程序(Handler2)来创建新对象并设置属性的值,您需要更多地了解使用Webapp2 request handler。
我还建议您按照tutorial to get started进行操作。