派遣のAPIView

(1)発送方法の詳細要求オブジェクト元のパッケージ----

(元の要求メソッドとプロパティをなど、直接通話要求内にカプセル化することができ、またはrequest._request使用することができるからrequest.user == request._request.user

DEFの派遣(セルフ、要求、* argsを、** kwargsから):
     "" " 
    ` .dispatch() `ほとんど同じで、Djangoの定期派遣、IS AS 
    しかし、スタートアップ、ファイナライズ、および例外処理のための余分なフック付き。
    " "" 
    self.args = 引数
    self.kwargs = kwargsから
     1の元のパッケージにさらに要求 
    リクエスト= self.initialize_request(リクエスト、引数*、** kwargsから)
    self.requestは =要求(2)さらに、要求パッケージが施されています 
    self.headersの= self.default_response_headers   廃止?
 
    試してみる要求するために呼び出しを追加2.
        self.initial(要求、* argsを、** kwargsから)(3)比閲覧中多的执行的方法、使用封装过后的要求进行调用
 
        適切なハンドラメソッドを取得し
        た場合 request.method.lower()自己。 http_method_names:
            ハンドラ = GETATTR(自己、request.method.lower()、
                              self.http_method_not_allowed)
        
            ハンドラ = self.http_method_not_allowed 
 
        応答 =ハンドラ(要求、* argsを、** kwargsから)
 
    を除き、EXCとして例外:
        応答 = self.handle_exception (EXC)
 
    self.responseSelf.finalize_response =(要求、応答、引数*、** kwargsから)(4)元のオブジェクトに応じては、さらに、カプセル化されて
    戻り self.response
発送方法のオーバーライド

カプセル化(2)initialize_request元の要求  

DEF(セルフ、要求、* argsを、** initialize_request kwargsからの):
     "" " 
    最初のリクエストオブジェクトで返します
    """ 
    parser_context = self.get_parser_context(リクエスト)
 
    、リターン要求(
        リクエスト、(1-1)、元のリクエスト 
        パーサself.get_parsers =() (1-2)[デシリアライゼーション・モード・リスト] 
        オーセンティケータ= self.get_authenticators() rest_frameworkという構成ファイルの(1-3)の例を[ミドルウェア認証クラスリスト] - - [BasicAuthenticationオブジェクトを、SessionAuthenticationオブジェクト] 
        交渉= self.get_content_negotiator()、
        parser_context = parser_context 
封装要求initialize_request

(3)詳細self.initial ----証明機関+ + +バージョン制御スロットル  

self.initial(要求、* argsを、** kwargsから)(3)比閲覧中多的执行的方法、使用封装过后的要求进行调用

デフ初期(自己、要求、* argsを、** kwargsから):
     "" 「
    従来の方法ハンドラを呼び出すに発生する必要が何かを実行します。
    『』」
    self.format_kwarg = self.get_format_suffix(** kwargsから)

    コンテントネゴシエーションを実行し、要求の受け入れ情報保存 
    NEG = self.perform_content_negotiation(リクエスト)
    のリクエストを.accepted_renderer、request.accepted_media_type = NEG 

    バージョン管理が使用されている場合は、APIのバージョンを確認します。(3-0)API版本的获取
    バージョン、= self.determine_versionスキーム(要求、* argsを、** kwargsから)
    request.version、request.versioning_scheme =バージョン、スキーム#のバージョン番号と処理さ

    着信要求がザ・が許可されていることをEnsure®を 
    self.perform_authentication(リクエスト)(3-1)認証が記録され 
    self.check_permissions(要求)(3-2)権利コンポーネント 
    self.check_throttles(要求)#の周波数成分
詳細self.initial

 

おすすめ

転載: www.cnblogs.com/open-yang/p/11572886.html