1

python中的一个类中是否可以有多个GET?

我试过这个:

import webapp2

class MainPage(webapp2.RequestHandler ):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("test")

    def get(self, name, surname):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('N: %s S: %s' % (name , surname))   

app = webapp2.WSGIApplication([('/.*', MainPage)],
                              debug=True)

但不起作用。

我该怎么做?处理两个不同路径的两个不同文件?

4

2 回答 2

7

在任何Python 类中,不能有两个方法命名相同。

相反,您应该定义两个不同的类,然后使用不同的 URL 模式匹配来选择使用哪个,而不是将所有内容 ( /.*) 发送到单个类。

这是一个(非常)基本的例子:

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write("test")

class NamePage(webapp2.RequestHandler):
    def get(self, name, surname):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('N: %s S: %s' % (name , surname))   

app = webapp2.WSGIApplication([
        ('/(.+)/(.+)', NamePage), # Matches /foo/bar
        ('/.*', MainPage), # Matches everything else
    ], debug=True)
于 2012-07-13T17:02:45.393 回答
0

您在这里尝试尝试的是超载。一个更微妙的方法而不是创建类可以如下:

import webapp2

class MainPage(webapp2.RequestHandler ):

    def get(self, name="default_name", surname="default_surname"):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('N: %s S: %s' % (name , surname))   

app = webapp2.WSGIApplication([('/.*', MainPage)],debug=True)

这里 name 和 surname 是可选的关键字参数(它们是您问题中的位置参数)。我希望它有帮助

于 2017-05-08T13:06:30.927 回答