検索

ホームページ  >  に質問  >  本文

装饰模式 - python tornado中如何给每个服务器请求动态加上装饰器?

PHP中文网PHP中文网2767日前273

全員に返信(2)返信します

  • 天蓬老师

    天蓬老师2017-04-17 16:50:32

    tornado は、RequestHandler で prepare やfinish などのメソッドを提供します。 prepare は、フレームワークが get/post/... これらのメソッドを呼び出す前に呼び出されます。 finish は、応答が最終的に書き戻されるときにフレームワークによって呼び出されます。したがって、これを使用して、django のミドルウェアと同様の機能を実装できます。たとえば、ログインのチェック、権限の検証、応答の変更結果はすべてミドルウェアで完了できます。

    リーリー

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:50:32

    クラスの作成を制御するために使用されるメタクラスである必要があります。

    ログイン後に get_user がユーザー名を返すことができる、つまりクラス B がログインしていないことを前提としたサンプル コード:

    リーリー

    出力:

    リーリー

    そして、このアイデアに従って、自分で変えてみましょう。


    デコレータのバージョン:

    リーリー

    出力:

    リーリー

    返事
    0
  • キャンセル返事