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)

しかし、動作しません。

どうすればいいですか?2つの異なるパスを処理する2つの異なるファイル?

4

2 に答える 2

7

Pythonクラスで同じ名前の2つのメソッドを使用することはできません

/.*代わりに、2つの異なるクラスを定義してから、すべて( )を単一のクラスに送信するのではなく、異なる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 に答える