DRFのAPIView

取り付けdjangorestframework

方法1:PIP3 djangorestframeworkをインストール

第二の方法:pycharmグラフィカルインタフェースのインストール

三つの方法:(使用されている現在のプロジェクトインタプリタに含まれる)ラインpycharmのインストールコマンド

2 djangorestframeworkのAPIView分析

@classmethod 
    デフas_view(CLS、** initkwargs):
        「」「
        ビュー機能上の元のクラスを保管してください

        。これは、我々はURLをするとき、私たちは、ビューについての情報を発見することを可能にする
        逆引き参照をパンくず生成に使用される。。
        『』」
        でisinstance場合(GETATTR(CLS、 'クエリセット'、なし)、models.query.QuerySet):
            デフforce_evaluation():
                (RuntimeErrorを送出
                    '直接`.queryset`属性を評価しないでください' 
                    結果の間キャッシュされ、再利用されるように」リクエスト' 
                    '`.ALLを()`を使用するか、代わりに`)(` .get_queryset呼び出します。'
            cls.queryset._fetch_all = force_evaluation 

        ビュー=スーパー(APIView、CLS).as_view(** initkwargs)
        view.cls = CLS 
        view.initkwargs = initkwargs 

        #注:セッションベースの認証が明示的にCSRF検証され、
        #他のすべての認証は、CSRF免除されています。
        リターンcsrf_exempt(ビュー)
コードをコピー
@classmethod 
    デフas_view(CLS、** initkwargs):
        「」「
        ビュー機能上の元のクラスを保管してください

        。これは、我々はURLをするとき、私たちは、ビューについての情報を発見することを可能にする
        逆引き参照をパンくず生成に使用される。。
        『』」
        でisinstance場合(GETATTR(CLS、 'クエリセット'、なし)、models.query.QuerySet):
            デフforce_evaluation():
                (RuntimeErrorを送出
                    '直接`.queryset`属性を評価しないでください' 
                    結果の間キャッシュされ、再利用されるように」リクエスト' 
                    '`.ALLを()`を使用するか、代わりに`)(` .get_queryset呼び出します。'
            cls.queryset._fetch_all = force_evaluation 

        ビュー=スーパー(APIView、CLS).as_view(** initkwargs)
        view.cls = CLS 
        view.initkwargs = initkwargs 

        #注:セッションベースの認証が明示的にCSRF検証され、
        #他のすべての認証は、CSRF免除されています。
        リターンcsrf_exempt(ビュー)
コードをコピー
デフ派遣(自己、要求、* argsを、** kwargsから):
        「」「
        `.dispatchは、()`はかなりDjangoの通常の派遣と同じですが、
        しかし、スタートアップのための余分なフックと、確定、および例外処理。
        『』」
        self.args =引数
        self.kwargs = kwargsから
        要求= self.initialize_request(要求、* argsを、** kwargsから)
        self.request =が要求
        self.headers = self.default_response_headers#廃止?

        試してみてください。
            self.initial(要求、*引数を、** kwargsから)

            #は、適切なハンドラメソッドを取得する
            場合self.http_method_namesでrequest.method.lower():
                ハンドラ= GETATTR(自己、request.method.lower()、
                                  self.http_method_not_allowed)
            他:
                ハンドラ= self.http_method_not_allowed 

            応答=ハンドラ(要求、* argsを、** kwargsから)

        :EXCとして例外を除いて
            、応答= self.handle_exception(EXC)

        self.response = self.finalize_response(要求、応答、*引数、** kwargsから)
        戻りself.response
コードをコピー
デフ派遣(自己、要求、* argsを、** kwargsから):
        「」「
        `.dispatchは、()`はかなりDjangoの通常の派遣と同じですが、
        しかし、スタートアップのための余分なフックと、確定、および例外処理。
        『』」
        self.args =引数
        self.kwargs = kwargsから
        要求= self.initialize_request(要求、* argsを、** kwargsから)
        self.request =が要求
        self.headers = self.default_response_headers#廃止?

        試してみてください。
            self.initial(要求、*引数を、** kwargsから)

            #は、適切なハンドラメソッドを取得する
            場合self.http_method_namesでrequest.method.lower():
                ハンドラ= GETATTR(自己、request.method.lower()、
                                  self.http_method_not_allowed)
            他:
                ハンドラ= self.http_method_not_allowed 

            応答=ハンドラ(要求、* argsを、** kwargsから)

        :EXCとして例外を除いて
            、応答= self.handle_exception(EXC)

        self.response = self.finalize_response(要求、応答、*引数、** kwargsから)
        戻りself.response
コードをコピー
デフinitialize_request(自己、要求、* argsを、** kwargsから):
        "" " 
        最初のリクエストオブジェクトを返します""" 
        parser_context = self.get_parser_context(リクエスト)

        復帰要求(
            リクエスト、
            パーサ= self.get_parsers()、
            =オーセンティケータself.get_authenticators()、
            交渉= self.get_content_negotiator()、
            parser_context = parser_context 
コードをコピー
    デフinitialize_request(自己、要求、* argsを、** kwargsから):
        "" " 
        最初のリクエストオブジェクトを返します""" 
        parser_context = self.get_parser_context(リクエスト)

        復帰要求(
            リクエスト、
            パーサ= self.get_parsers()、
            =オーセンティケータself.get_authenticators()、
            交渉= self.get_content_negotiator()、
            parser_context = parser_context 
コードをコピー
デフ初期(自己、要求、* argsを、** kwargsから):
        「」「
        従来の方法ハンドラを呼び出すに発生する必要が何を実行します
        『』」
        self.format_kwarg = self.get_format_suffix(** kwargsから)

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

        バージョン管理が使用されている場合は、APIのバージョンを#決定します。
        バージョン、スキーム= self.determine_version(要求、* argsを、** kwargsから)
        request.version、request.versioning_scheme =バージョン、スキーム
 
        #は、着信要求が許可されていることを確認します
        self.perform_authentication(リクエスト)
        self.check_permissions(リクエスト)
        self.check_throttles(リクエスト)

 

三djangorestframework Requestオブジェクトを簡単に

おすすめ

転載: www.cnblogs.com/wangtenghui/p/11127332.html