序文
ジャンゴviews.py編集ビュー1は、クラスベースを達成することである2つの方法が、ありますが、他の機能の実装である、二つの方法を使用することができます。
APIView RESTフレームワークでは、クラスDjangoのビューのサブクラスであるクラスを提供します。
違いとAPIViewの表示
View
Djangoのデフォルトのビューは、基本クラスがあるAPIView
ジャンゴから継承され提供されるすべてのビューのRESTフレームワーク、の基本クラスですView
。
APIView
View
例外います。
- ビューメソッドに渡さ代わりに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(データ)