嗨,我有以下谷歌代码什么时候名为get of Rot13,我得到以下错误:
handler = self.handler(request, response)
TypeError: init() takes exactly 1 argument (3 given)
class BaseHandler(webapp2.RequestHandler):
def no_caches(self):
self.response.headers["Pragma"]="no-cache"
self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate, pre-check=0, post-check=0"
self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00"
def render_str(self,template,**params):
t=jinja_env.get_template(template)
return t.render(params)
def render(self,template,**kw):
self.response.out.write(self.render_str(template,**kw))
def write(self,*a,**kw):
self.response.out.write(*a,**kw)
class Rot13(BaseHandler):
def __init__(self):
#BaseHandler.__init__(self) not working too
self.no_caches()
file='rto13.html'
def convert_rto13(self,s):
return s.encode('rot13')
def get(self):
self.render(self.file,text='',status='welcome')
def post(self):
text=self.request.get('text')
if not text:
return self.render(self.file,text='',status='You have to enter something')
rot13=self.convert_rto13(text)
self.render(self.file,text=rot13,status='translated')
除非接受它的所有参数并调用super,否则您不能重写处理程序。只是盲目地重写一个initinit方法,而不调查它在父类中的作用,这是导致问题的一个方法,因此会出现问题。在
RequestHandler
的initwebapp2的RequestHandler是有文档记录的。https://webapp-improved.appspot.com/api/webapp2.html#webapp2.RequestHandler
特别是说
class webapp2.RequestHandler(request=None, response=None)
所以在Rot13中重写BaseHandler的init方法应该如下所示
问题出在no\u caches()函数中。在
当输入多个标题时,请改用addheaders(字段,值)。在
^{pr2}$https://developers.google.com/appengine/docs/python/tools/webapp/redirects
如the documentation for RequestHandler所示,它有两个参数:request和response。您的
__init__
也需要接受它们,或者更好地接受*args, **kwargs
,并将它们传递给超级类。在相关问题 更多 >
编程相关推荐