2

次の(サンプル)ハンドラーが与えられます(ここから取得):

handlers = [
            (r"/", MainHandler),
            (r"/auth/login", AuthLoginHandler),
            (r"/auth/logout", AuthLogoutHandler),
        ]

プログラムでハンドラーを別のページに印刷する方法はありますか?私は次のようなことを考えていました。

handlers = [
            (r"/", MainHandler),
            (r"/auth/login", AuthLoginHandler),
            (r"/auth/logout", AuthLogoutHandler),
            (r"/routes", RoutePrinter),
        ]

...

class RoutePrinter(...):
    def get(self):
       self.write(str(self.application.routes))

それは私に [(<_sre.SRE_Pattern object at 0x216c130>, [, , , , , , , , , , , , , , , , , , , , , , ])]

私はいくつかの異なるアクセサを試しましたが、実際には役に立ちません。ルートのリストを生成することはできますか?

編集

さらに検索した結果、これらの正規表現オブジェクトからパターン/フラグを印刷する方法に出くわしました。self.application.handlers[0][0]問題は、それが当時ほど直感的ではないため、それらをアンネストする方法を理解するのに苦労していることですself.application.handlers[1][0]。2つ目は、「/ auth / login」のように見えますが、「範囲外」です。

私は何が欠けていますか?

4

1 に答える 1

3

これはどうですか?

[handler.regex.pattern for handler in self.application.handlers[0][1]]

ハンドラークラスの名前も必要な場合:

[(handler.regex.pattern, handler.handler_class) for handler in self.application.handlers[0][1]]
于 2012-12-27T21:05:32.300 に答える