Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Google App Engine中使用默认实体初始化数据存储_Python_Google App Engine_Webapp2 - Fatal编程技术网

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

Python 如何在Google App Engine中使用默认实体初始化数据存储,python,google-app-engine,webapp2,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) 我要

假设我有一个特殊的模型

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方法用于设置属性的初始值,但是当我在请求处理程序的Get方法中使用GAE&webapp2时,我得到了一个错误

出现错误的代码是:

class WikiPage(Handler):
    def __init__(self):
        pass
我看到的错误是:

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

请告知

不清楚您想做什么,但如果您只是想消除错误,则需要定义如下的
\uuuuu init\uuuuu
方法:

class WikiPage(Handler):
    def __init__(self, *args, **kwargs):
        pass
更新以回答您的问题“为什么””:


因为您正在重写继承自
RequestHandler
处理程序的
\uuuu init\uuuuu
方法,如果您在这里查看它的原始定义:您将看到它是如何定义的,在整个框架中也是如何使用它的,这意味着如果您出于任何原因决定重写它,您需要遵循相同的格式。

您能解释一下为什么需要这样吗?是的,我确实看到了这个定义,但假设由于其他两个参数都有默认值,所以它们都得到了处理。我会测试并让你知道。和平you@ImranNazir,是的,原始定义有默认值,如果您愿意,也可以定义它们。您正在覆盖(完全替换)原始定义(因为您似乎没有调用
super
),因此在那里定义的内容不再扮演任何角色。问题是,其他一些代码(传入请求处理程序)正在将3个参数传递给
\uuuuu init\uuuu
方法,但是
\uuuuuu init\uuuu
方法的实现只接受一个(self),这就是代码失败的原因。是的,我知道路由可以将参数传递给处理程序。我在get方法中这样使用它们。在本例中,我的路径是:'(PAGE_RE,WikiPage)'其中的'PAGE_RE=r'(/(?:[a-zA-Z0-9_-]+/?)*)''这应该将baseurl之后的所有内容传递到我的处理程序的get方法中。这将是传递的1个参数,而不是您的处理程序从webapp2继承的3个参数。请查看以下webapp2文档: