差分APIViewの表示

序文

ジャンゴviews.py編集ビュー1は、クラスベースを達成することである2つの方法が、ありますが、他の機能の実装である、二つの方法を使用することができます。
APIView RESTフレームワークでは、クラスDjangoのビューのサブクラスであるクラスを提供します。

 

違いとAPIViewの表示

ViewDjangoのデフォルトのビューは、基本クラスがあるAPIViewジャンゴから継承され提供されるすべてのビューのRESTフレームワーク、の基本クラスですView

APIViewView例外います。

  • ビューメソッドに渡さ代わりにDjangoはHttpRequesetオブジェクトの、RESTフレームワーク要求オブジェクトです。
  • この方法は、RESTフレームワークビュー・レスポンス・オブジェクト、データ・セットに応答してビューを返すことができる(レンダリング)フロントエンドによって要求されるフォーマットに準拠します。
  • 任意にApiException例外が捕捉され、そして適切な応答情報に加工されている;にApiException例外トラップ
  • 事前分布への発送を()の実行、認証、認可チェック、フロー制御を要求します。

 

ソースジャンゴの表示部分

クラスビュー:
     「」「
    すべてのビューのために意図的にシンプルな親クラスのみ実装が。
    派遣・バイ・方法と簡単な正気チェック。
    『』」

    http_method_names = [ 取得ポストPUT パッチ" 削除' ' ' ' オプション' ' トレース" ] 

    デフ __init__(自己、** kwargsから)
        「」「
        ;。有益余分含めることができますコンストラクタのURLconfに呼び出さ
        キーワード引数、および他のものを。
        」 『』
        キーワード引数を通過し、私たちにその値を保存するか
        #のインスタンス、またはエラーが発生します。
        以下のためのキー、値kwargs.items():
            SETATTR(自己、キー、値)

RESTフレームワークAPIView継承DjangoのはView、ソースコードの一部を次のように

クラスAPIView(ビュー): 

    以下のポリシーはグローバルのいずれかに設定することができる、またはパー・ビュー。
    renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES 
    parser_classes = api_settings.DEFAULT_PARSER_CLASSES 
    authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES 
    throttle_classes = api_settings.DEFAULT_THROTTLE_CLASSES 
    permission_classes = api_settings.DEFAULT_PERMISSION_CLASSES 
    content_negotiation_class = api_settings.DEFAULT_CONTENT_NEGOTIATION_CLASS 
    metadata_class = api_settings.DEFAULT_METADATA_CLASS 
    versioning_class =api_settings.DEFAULT_VERSIONING_CLASSの

    #は簡単にテストを行うために他の設定の依存性注入を許可します。
    設定= api_settings 

    スキーマ = DefaultSchema()

APIViewその他のプロパティやメソッドなど:認証、認可チェック、フロー制御

  • authentication_classes認証
  • permission_classesの権限チェック
  • フロー制御throttle_classes

Djangoのビュー

独自のビュージャンゴ最初の使用、カード番号カード情報内のテーブルを取得:
models.pyデザインのカードテーブル

 

Models.py 
クラスカード(models.Model):
     '' ' 基本情報#の銀行カード:JAY、QQ交換基:123456789 ' '' 
    card_id = models.CharField(= MAX_LENGTH 30、verbose_name = " カード"、デフォルト= "" 
    card_user = models.CharField(= MAX_LENGTH 10、verbose_name = " 名前"、デフォルト= "" 
    ADD_TIME = models.DateField(auto_now =真、verbose_name = " 時間を追加" 

    クラスのMeta:
        verbose_name_plural = 銀行カード口座"
        verbose_name= " 銀行カード口座_基本情報" 
        
    DEF  __str__ (自己):
         戻り self.card_id


views.pyビューを書きます

django.http インポートjsonResponse
 から rest_framework インポートシリアライザ
 から django.core インポート dj_serializersのASシリアライザ   #のシリアライザ内部の回避の葛藤とrest_framework 
から .models インポート *
 から django.views.generic.base インポートビュー
 のインポートのJSON
 #1 著者:上海よ、QQ交換基:750 815 713 


クラスCardListView(ビュー):
     '' ' に基づいてDJANGO取得したカードのリストビュー''' 
    DEF GET(セルフ、要求):
        データ = {}
        カード= Card.objects.all()
        データ[ ' 結果' ] = json.loads(dj_serializers.serialize(" JSON " 、カード))
         リターン JsonResponse(データ)

 

おすすめ

転載: www.cnblogs.com/jiangcw/p/12412017.html