リクエスト解析モジュールレンダリングモジュールシングモジュールに67 DRFのapiview応答

1.Djangoコンフィグレーションの確認

1.ルート分布含みます

 

 

 2.app登録:アプリは、データベース関連の操作を使用していない登録することはできません。DRFは、使用する前に登録する必要があります。短いに追加するように登録:登録は__init__ファイル次のアプリパッケージをロードします

 

 

 3.データベース構成:構成設定ファイル

 

 3.ormデータベースの設定

共通のフィールド

 

 同様の舞台裏には、フロントデスク、静的リソースファイルリソース割り当て静的を公開します

 

 

 

フロントアクセス

 

 

 2.APIViewリクエストのライフサイクル

 

3.要求分析モジュール

ディスパッチ処理1. DRF無効にCSRFの認証ルール

 

2.カスタマイズデータフォーマット構成要求DRF

3.下位互換性

 

 

 

 

 

4.レスポンスのレンダリングモジュール

2つのフォーマットでデータをレンダリング:データのレンダリングやブラウザのレンダリング(restframework表示に設定ファイル)

 

 

 

 説明:ブラウザコメントアウトしてからのみ、双方向データをレンダリングする形式のデータをJSON取得することができ、ブラウザを選択してください

シーケンシングモジュール

1.配列モジュールの導入

 

 

2.

##### models.py 
から django.db インポートモデル
 から django.conf インポート設定
 クラス:ユーザー(models.Model)
    SEX_CHOICES =((0、' ')、(1、' ' )) =モデル.CharField(MAX_LENGTH = 64、verbose_name = ' 姓名' 
    パスワード = models.CharField(max_lengthを= 64 
    年齢 = models.IntegerField()
    高さ = models.DecimalField(max_digits = 5、decimal_places = 2、デフォルト= 0)
    のセックスModels.IntegerField =(= SEX_CHOICES選択肢、デフォルト= 0)
    セックス= models.CharField(選択肢= [( '0'、 'M')、( '1'、 'F')]) 
    アイコンmodels.ImageField =( = upload_to アイコン、デフォルト= アイコン/ Default.png 

    #1 の前方にフィールドカスタムシリアル化
    #の利点:1)元のデータベースのデータをフォーマットすることができるフィールド2)は元のフィールド名データベースの外部に隠すことができる3 )を直接手術台に接続することができる 
    @Property   すべてのフィールドはプラグである
    DEF 性別(自己):
         戻りself.get_sex_display()

    @Property 
    DEF IMG(SELF):
         リターン settings.BASE_URL settings.MEDIA_URL + + self.icon.name 

    DEF __str__ (自己):
         戻りself.name 
` 

コアの#### serializers.py配列
から rest_framework インポートシリアライザ
 からインポートモデル
 クラスUserModelSerializer(serializers.ModelSerializer):
     クラスメタ:
         #配列は、そのクラスに二次的ですモデルクラス
        モデル= models.User 
        #1 デシリアライゼーション・フィールドに関与している配列のセット
        プラガブル:フィールドは、選択的に(プラグがモデルクラスで製造される)前面に戻すことができる
        。#の年齢= [「名前」、」フィールド''高さ''性別''アイコン] 
        フィールド= [ ' 名前'' 年齢'' 高さ'' 性別'' IMG ' ] 
`` ` 

#### views.py 
から rest_framework.viewsの輸入APIView
 から rest_framework.responseの輸入レスポンス

から輸入モデル、シリアライザ

クラスUserAPIView(APIView):
     デフ(自己、要求、* argsを、**取得kwargsから):
        PK = kwargs.get(' PK ' の場合:PK   单查
            1)データベースと対話するリソースを取得するか、OBJS OBJリソース
            フロントJSONデータに戻すことができるデータのシーケンスに2) 
            受信データにJSON戻される)3 
            OBJ = models.User.objects.get(PK = PK)
            シリアライザ =シリアライザ.UserModelSerializer(OBJは、多くの= False)が
             返さ応答(serializer.data)

        #のクラスタチェック
            リソースを取得したり、OBJS OBJ資源にデータベースと対話し、1) 
            フォアグラウンドのJSONのデータへのデータ系列に戻すことができる)2 
            3) JSONデータは、前面に戻される 
            クエリセット= models.User.objects.all()
            データが動作多くの複数であるか否かを 
            シリアライザ= serializers.UserModelSerializer(クエリセット、多く= 戻り応答(serializer.data)

    DEF POST(自己、リクエスト、引数*、** kwargsから):
        ネス
        1)が提出した要求からのデータ受信要求取得するために
        Modelオブジェクトにデータを変換する2)、および完全なデータベースのストレージ操作
        3)列のJSONデータの受信に返されるオブジェクトの成功ストレージ(ない要求と応答などのデータ:送信要求がパスワードを要求、パスワードの応答が表示されてはならない)
        4)のデータは、フロントJSONに戻りました

 

おすすめ

転載: www.cnblogs.com/bigbox/p/12602602.html