ジャンゴRestframework.2

APIView

  • ビューから継承されます。

  • エントリー機能

    • as_view

      • クエリセット検出

        • 直接クエリセットを操作しないでください、複数のデータ間の直接操作は、障害が発生した要求します

        • 全部またはget_querysetに推奨

      • 親クラスas_viewを呼び出します

        • パラメータの検出

        • 閉鎖機能を定義します

        • レコードデータ

        • ディスパッチ

    • ディスパッチ

      • メソッドのオーバーライド

      • 要求は、変換(初期化)製

      • 全体を初期化した後

        • 接尾辞の書式を設定します

        • コンテンツの決定

        • 決定版

          • 必須のアップグレード

          • 推奨アップグレード

          • いいえアップグレードありません

        • 認証を行います

        • チェックパーミッション

        • スロットル、制限

      • 配信要求のための方法

      • 上記のプロセスは、異常と直接投げない異常を修飾する場合は、例外がキャッチされます

      • ポリシーの例外を提供

      • 最終的な応答統一プロセス

      • 最後に、リターン

ジェネリック

  • GenericsAPIView(最も一般的)

    • 受け継ぎます

      • APIView

    • プロパティ

      • filter_backends

      • lookup_field

      • lookup_url_kwarg

      • pagination_class

      • クエリセット

      • serializer_class

    • 方法

      • get_queryset

      • GET_OBJECT

      • get_serializer

      • get_serializer_class

      • get_serializer_context

      • filter_queryset

      • ページネータ

        • 変更プロパティを使用します

      • paginate_queryset

      • get_paginated_response

  • CreateAPIView

    • 受け継ぎます

      • GenericAPIView

      • CreateModelMixin

    • 方法

      • 役職

        • 作ります

  • ListAPIView

    • 受け継ぎます

      • GenericAPIView

      • ListModelMixin

    • 方法

      • 取得する

        • リスト

  • RetrieveAPIView

    • 受け継ぎます

      • GenericAPIView

      • RetrieveModelMixin

    • 方法

      • 取得する

        • 検索します

  • DestroyAPIView

    • 受け継ぎます

      • GenericAPIView

      • DestroyModelMixin

    • 方法

      • 削除

        • 破壊する

  • UpdateAPIView

    • 受け継ぎます

      • GenericAPIView

      • UpdateModelMixin

    • 方法

      • プット

        • 更新

      • パッチ

        • partial_update

  • ListCreateAPIView

    • 受け継ぎます

      • GenericAPIView

      • ListModelMixin

      • CreateModelMixin

    • 方法

      • 役職

        • 作ります

      • 取得する

        • リスト

  • RetrieveUpdateAPIView

    • 受け継ぎます

      • GenericAPIView

      • RetrieveModelMixin

      • UpdateModelMixin

    • 方法

      • 取得する

        • 検索します

      • プット

        • 更新

      • パッチ

        • partial_update

  • RetrieveDestroyAPIView

    • 受け継ぎます

      • GenericAPIView

      • RetrieveModelMixin

      • DestroyModelMixin

    • 方法

      • 取得する

        • 検索します

      • 削除

        • 破壊する

  • RetrieveUpdateDestroyAPIView

    • 受け継ぎます

      • GenericAPIView

      • RetrieveModelMixin

      • UpdateModelMixin

      • DestroyModelMixin

    • 方法

      • 取得する

        • 検索します

      • プット

        • 更新

      • パッチ

        • partial_update

      • 削除

        • 破壊する

ミックスイン

  • CreateModelMixin

    • 機能

      • 作ります

      • perform_create

      • get_success_headers

  • ListModelMixin(複数)

    • 機能

      • リスト

  • RetrieveModelMixin(单数)

    • 機能

      • 検索します

  • UpdateModelMixin(单数)

    • 機能

      • 更新

      • perform_update

      • partial_update

  • DestroyModelMixin(单数)

    • 機能

      • 破壊する

      • perform_destroy

使い方(簡単な登録ログイン)

  • モデルを作成します。
クラスのユーザー(models.Model):

    u_name = models.CharField(max_lengthを= 32、=ユニーク真)
    u_password = models.CharField(MAX_LENGTH = 256 

    @classmethod 
    デフGET_USER(CLS、u_name):
         試してください
            ユーザー = User.objects。 (u_name =取得u_name)
             リターン・ユーザー
         を除く:eと例外
             印刷(e)を

    デフ(自己、パスワード)check_password:
         リターン self.u_password ==パスワード
  • 生成された移行ファイル
  • シリアライザを作成します。
クラスUserSerializer(serializers.ModelSerializer):

    クラスメタ:
        モデル = ユーザー
        フィールド =(" ID "" u_name "" u_password "

 

  • ルートを作成します。
urlpatterns = [ 
    URL(R ' ^ユーザ/ ' 、views.UsersAPIView.as_view())
]
  • ビュークラスを作成します。
クラスUsersAPIView(CreateAPIView):
    クエリセット = User.objects.all()
    serializer_class = UserSerializer 

    デフポスト(自己、要求、* argsを、** kwargsから):
        アクション = request.query_params.get(" アクション" 

        であれば、アクション== " 登録" リターン self.do_register(要求、* argsを、** kwargsから)
         ELIFのアクション== " ログイン" リターン self.do_login(要求、* argsを、** kwargsから)
         調達にApiException(詳細= " [ログイン、登録]正しい行動を供給してください" 

    デフ do_register(自己、要求、* argsを、** :kwargsから)

        プリント(タイプ(リクエスト))
        印刷(タイプ(自己))

        リターン自己を。 (要求、* argsを、**作成kwargsからの)

    デフ do_login(自己、要求、* argsを、** kwargsから):
        u_name = request.data.get(" u_name " 
        u_password = request.data.get(" u_password " 

        ユーザー = User.get_user(u_name)

        なら ないユーザー:
             上げるにApiExceptionを(詳細= " 用户不存在" 

        場合 ではない(u_password)をuser.check_password:
             上げるにApiException(詳細= " 密码错误を" 

        トークン = 。uuid.uuid4()六角

        存トークン

        データ = {
             " MSG "" OK " " ステータス" :HTTP_200_OK、
             " トークン:トークン
        }

        返すレスポンス(データを)

 

おすすめ

転載: www.cnblogs.com/zbcdamao/p/10990749.html