如何使用Google App Engine中的默认实体初始化数据存储

时间:2014-10-11 19:47:24

标签: python google-app-engine webapp2

假设我有一个特定的模型

class Page(db.Model):
    """ Model for storing wiki pages """
    page_name = db.StringProperty(required=True, default="/")
    content = db.StringProperty(required=True, default="")
    created = db.DateTimeProperty(auto_now = True)

我想要做的是查询数据存储。如果没有基于此模型的实体,我想创建一个默认实体。或者用一个默认实体创建模型会很棒。

我知道Python中的 init 方法,用于将初始值设置为属性,但是当我将其用于GAE&请求处理程序的Get方法中的webapp2我收到错误。

错误的代码是:

class WikiPage(Handler):
    def __init__(self):
        pass

我看到的错误是:

handler = self.handler(request, response)
TypeError: __init__() takes exactly 1 argument (3 given)

请告知

1 个答案:

答案 0 :(得分:1)

目前还不清楚你要做什么,但如果你只想摆脱错误,你需要定义__init__方法,如下所示:

class WikiPage(Handler):
    def __init__(self, *args, **kwargs):
        pass

更新回答您的问题“为什么”:

因为您要覆盖继承自__init__的{​​{1}}类的Handler方法,并且如果您在此处查看其原始定义:https://code.google.com/p/webapp-improved/source/browse/webapp2.py#506您将会看看它是如何定义的,它是如何在整个框架中使用的,这意味着如果你因任何原因决定覆盖它,你需要遵循相同的格式。