10.15要約

分析モジュール

なぜ分析モジュールを構成するには

データ・パケット・モードを解析するために、分析クラスの様々なことで、私たちに1.drf

2.私たちは、データを解析しません解像度の背景を形成するフロントデスクが提出したデータの構成を、制御することができます

それらは選択的構成規則に従ってデータを解析することができるように、グローバル設定する指定されたローカル設定するための各クラスのビューは、表示するためであります

 

ソース・エントランス

発送方法APIViewクラス 
リクエスト= self.initialize_request(要求、*引数、** kwargsから)   #1 点に

基づいて取得し、解析する 
パーサのself.get_parsers =()は、   #1 に点

クラス属性(部分構成)または構成にファイル(グローバルコンフィギュレーション)を取るparser_classesは
返す [パーサ()をするためにパーサ self.parser_classes]

 

グローバル設定:プロジェクトのsettings.py

= REST_FRAMEWORK {
     グローバルパーサー・クラス構成
    ' DEFAULT_PARSER_CLASSES ' :[
         ' rest_framework.parsers.JSONParser '#1 JSONパケット
        ' rest_framework.parsers.FormParser '#のURLエンコードパケット
        ' rest_framework.parsers.MultiPartParser '   #のフォーム・データ・パケット
    ] 
}

 

ローカル設定:アプリケーション固有のビュークラスviews.py

rest_framework.parsers インポートJSONParser
 クラスブック(APIView):
    ローカルで解決クラス構成であれば、パケットのJSONタイプがに解析されるよう 
    parser_classes = [JSONParser]
     パス

 

 

異常モジュール

なぜカスタム例外モジュール

生成された全ての例外APIViewビュークラスDRF後、例外処理スキーム1であります

デフォルト例外処理方式(rest_framework.views.exception_handler)、限られた処理範囲によって提供2.drf

治療は、異常復帰処理によって提供3.drf二つの方式ではなく、処理なし(以降、サーバが前景に例外をスローされる)を返し

4.例外を定義する目的が処理されないので、解決例外はDRF、とても合理的なリターン例外情報を取得するためのフロントデスク、例外レコードの背景情報

 

ソースコード解析

例外モジュール:派遣法のAPIViewクラスの 
レスポンス= self.handle_exception(EXC)    ポイントに

例外ハンドラ・プロセス(メソッド)を取得
#の層は、コンフィギュレーション・ファイルを取って、ソースを見て、rest_framework.viewsを取得例外は、exception_handlerの
#のカスタム:自分のプロファイル構成例外は、exception_handlerポイントで直接例外は、exception_handler関数を記述するために= self.get_exception_handler独自の例外は、exception_handler() 

取り扱い結果例外
#のカスタム例外の定義は、例外は、exception_handler例外ハンドラを提供することであり、その目的は、治療応答を作ることです値持っている必要があります 
応答を=例外は、exception_handler(EXC、contexxt)

 

使用方法:例外は、exception_handler書き込みが身体機能を実装する方法をカスタマイズ

settings.py自分のプロファイルを変更 
REST_FRAMEWORK = {
     グローバル設定モジュール異常
    例外は、exception_handler api.exception.exception_handler 
} 


例外は、exception_handlerする例外処理にまずrest_framework.views 2の分析を処理(戻り値)応答の結果、値はDRFが代わっなしに自分自身に対処する必要があり、処理されてそこに表している

#のファイルに例外は、exception_handler機能を書いて、カスタムの例外処理ファイル例外
から rest_framework.views インポートdrf_exception_handler AS例外は、exception_handler
 から rest_framework.viewsがインポートレスポンスを
 rest_frameworkのインポートステータス
DEF 例外は、exception_handler(EXC、コンテキスト):
    例外は、exception_handlerののDRFの基礎過程 
    レスポンス= drf_exception_handler(EXC、コンテキスト)
     空、カスタム二次処理
    のIF応答がありませんなし:
         印刷(EXC) 
        印刷(コンテキスト)
        を印刷" S% - %のS - %S '%(コンテキスト[ ' リクエスト' ] .method、EXC))
         を返す応答({
             ' 詳細'' サーバーエラー' 
        }、ステータス = status.HTTP_500_INTERNAL_SERVER_ERROR、例外=真の)
     リターン応答

 

応答モジュール

レスポンスクラスのコンストラクタ:rest_framework.response.Response

DEF  __init__(自己、データ=なし、ステータス= なし、
                        テンプレート名 =なし、ヘッダ= なし、
                        例外 = Falseを、CONTENT_TYPE = なし:
         "" " 
            :PARAMデータ:応答データ
            :PARAMステータス:HTTPレスポンスステータスコード
            :のparamテンプレート名: DRFまた、ページテンプレートのアドレス(理解していない)レンダリング、ページをレンダリングすることができます
            のparamヘッダー:レスポンスヘッダ
            の異常場合:PARAM例外を
            のparam CONTENT_TYPE:応答のデータ形式(通常、治療せずに、レスポンスヘッダをもたらし、かつデフォルトはJSON) 
        "" " 
        パス

 

使用:従来例レスポンスオブジェクト

#ステータスモジュールは、デジタルネットワークのステータスコードの束を説明することです

rest_frameworkインポートステータスの解釈モジュールからネットワーク・ステータス・コードの数の束があります

#ステータスのみとヘッダは、デフォルト値を持って、通常の状況下では、データを返す必要があります

応答を返す(データ= {データ}を、ステータス= status.HTTP_200_ok、ヘッダー= { }に配置されたレスポンスヘッダ

 

シリアル化アセンブリ

知識ポイント:シリアライザ(部分的な底)、ModelSerializer(フォーカス)、ListModelSerializer(変更する補助グループ)

 

シリアライザ

シリアル化の準備:

- モデル層:models.py

クラスユーザ(models.Model):
    SEX_CHOICES = [ 
        [0、' ' ]、
        [ 1、' ' ] 
    ]  = models.CharField(MAX_LENGTH = 64 
    PWD = models.CharField(MAX_LENGTH = 32 
    電話 = models.CharField(MAX_LENGTH = 11、ヌル= Trueの場合、デフォルト= なし)
    性別 = models.IntegerField(選択肢= SEX_CHOICES、デフォルト= 0)
    アイコン = models.ImageField(upload_to = ' アイコン'、デフォルト= " アイコン/ default.jpg' 

    クラスメタ:
        DB_Tableの = ' old_boy_user ' 
        verbose_name = ' 用户' 
        verbose_name_plural = verbose_name 

    DEF  __str__ (自己):
         戻り ' %S '%self.name

 

- バックグラウンド管理:admin.py

django.contribの輸入管理
 から輸入モデル

admin.site.register(modesl.User)

 

おすすめ

転載: www.cnblogs.com/TZZ1995/p/11681406.html