Django Rest Frameworkを学ぼう! ~シリアライズについて~

前回は、開発環境の構築まで行いました。本日は、Django Rest Frameworkのシリアライズについて学びます。

前回

シリアライズとは

シリアライズとは、DjangoのQuerySetsやモデルインスタンスをレンダリングしやすい形式にフォーマットすることを指します。

例えば、QuerySetsをPythonの基本データ型に変換し、最終的にJSONにすることも可能です。

デシリアライズはその逆で、JSONなどのデータをpythonが扱えるデータ形式に変換することを指します。

通常、APIとブラウザ間のデータのやり取りには、それぞれが処理できるデータ形式に変換(シリアライズ/デシリアライズ)する必要があります。

DjangoのQuerySetsをブラウザが受け取っても処理はできないですし、その逆もまた然りなのです。

シリアライズクラスの実装

Django Rest Frameworkでは、Serializersクラスを提供しています。

このクラスを使って、シリアライズを実装してみましょう。

まずは、ディレクトリとファイルを用意します。

続いて、シリアライズクラスを実装します。

上記のコードでは、Serializerクラスを継承したArticleSerializerクラスを定義しています。

そして、フィールド(idやauthorなど)は、Articleモデルと同じフィールド名を指定しています。

また、create, updateは、Serializerクラスのcreateとupdateをオーバーライドしています。

Articleデータの作成

python manage.py shellからArticleデータを作成しましょう。

シリアライズクラスの検証

先ほど作成したArticleSerializerを検証してみましょう。

上記では、DjangoのテーブルからArticleクラスを取得しました。

これをシリアライズクラスに渡します。

上記が、Article instanceです。Django Classなどの複雑なデータをPythonの基本データ型に変換してくれます。

これがシリアライズです。あとは、このデータをJSON形式にフォーマットしてあげれば良いわけです。

APIとフロントのデータ間のやり取りは、 byteに変換されるため、bが先頭についてます。

一方、byteに変換されたJSONをAPI側で受け取る場合は、以下の方法を用います。

ちなみに、シリアライズクラスにデータを渡すと自動的にバリデーションチェックを実行します。

バリデーションチェックがOKの場合、シリアライズクラスのvalidated_dataからデータを取得できます。

saveメソッドを使用すると保存もできます。

次回

次回は、API Viewについて学んでいきましょう。

関連

こちらもどうぞ

Djangoおすすめ書籍

Djangoを学ぶなら以下の書籍がオススメです。

緑 -> 赤 -> 紫の順でやればOKです。読みやすい英語で書かれているので、英語力もついでに上がるかもしれません^^

コメントを残す