取り付け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(リクエスト)