2016-05-14 4 views
1

次のコードを考えてみます?webapp2をハンドラのPython GAEでURLを解析

class Activate(BaseHandler): 
    def get(self, key): 
    self.response.out.write(key) 
application = webapp2.WSGIApplication([('/activationlink/([^/]+)?', Activate)],debug=True,config=config) 

を私はハンドラは/ activationlinkの後の部分は/実際の鍵であることを「知っている」かと思いましてパターン/文字列/ string2のすべてのURLがキー= string2をハンドラに送信するのでしょうか?もしそうなら、それはwebapp2.RequestHandlerクラスに設定されていますか? webapp2をURI routing簡単なルート部から

答えて

0

は、この例を見てみましょう:

class ProductHandler(webapp2.RequestHandler): 
def get(self, product_id): 
    self.response.write('You requested product %r.' % product_id) 

app = webapp2.WSGIApplication([ 
    (r'/products/(\d+)', ProductHandler), 
]) 

ハンドラメソッドは、URIから抽出product_idを受信し、応答としてのIDを含む単純なメッセージを設定します。

ご覧のとおり、\d+は、正の整数を送信することを定義しています。

パラメータは定位置です。だから、あなたがこれを行う場合:

... 
(r'/products/(\d+)/(\d+)', ProductHandler) 
... 

をあなたの方法は、このように、(URLの順に)、これらのパラメータを受信する必要があります:

... 
def get(self, param1, param2): 
    ... 

あなたが詳細をお知りになりたい場合は、読みここでのドキュメント:

これはあなたに役立ちます。

+0

明るく透明です!ありがとう! –

0

class ProductHandler(webapp2.RequestHandler): 
    def get(self, product_id): 
     self.response.write('This is the ProductHandler. ' 
      'The product id is %s' % product_id) 

app = webapp2.WSGIApplication([ 
    (r'/', HomeHandler), 
    (r'/products', ProductListHandler), 
    (r'/products/(\d+)', ProductHandler), 
]) 

...

正規表現部分が内部グループを定義することができ、通常の正規表現(REモジュールを参照) あります括弧。一致したグループ値 は、位置引数としてハンドラに渡されます。上記の例の では、最後のルートがグループを定義しているため、ルートが一致すると( の場合は1つ以上の数字)、ハンドラは一致する値 を受信します。あなたのケースでは

([^/]+)Activate.get()に渡さkeyに一致するコンテンツを翻訳し、当該正規表現基です。

関連する問題