Django Academy · レッスン

Serializers:ModelからJSONへ

オブジェクトをJSONとの間で変換します

レッスン 2/413 ステップ

「Serializers:ModelからJSONへ」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

翻訳レイヤー

serializerはDRFの翻訳機です。モデルインスタンスを送信用のJSONに変換し、受信したJSONをPythonに戻します。

json.dumpsだけではいけない理由

生のjson.dumpsではモデルオブジェクトやバリデーションを扱えません。serializerはフィールド、型、ルールを理解しているため、面倒な処理を任せられます。

ModelSerializerを使う

最も手早く始める方法はModelSerializerです。モデルを指定すると、ModelFormと同じように対応するフィールドを自動生成します。

from rest_framework import serializers

ModelSerializerを定義する

ModelSerializerを継承し、内部のMetaクラスでモデルとAPIに公開するフィールドを指定します。

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['id', 'title']

フィールドを選ぶ

フィールドを明示的に列挙するか、fields = '__all__'ですべてを含めます。明示的に指定するほうが、新しいカラムを誤って公開することがないため安全です。

JSONにシリアライズする

インスタンスをserializerに渡し、.data属性を読み取ると、そのまま表示に使える、JSONに適した値だけで構成されたPythonの辞書を取得できます。

ser = BookSerializer(book)
ser.data  # {'id': 1, 'title': 'Dune'}

複数のオブジェクトを一度に処理する

クエリセット全体をシリアライズするにはmany=Trueを追加します。DRFが1回の処理で、オブジェクトごとに1つずつ辞書を持つリストを返します。

BookSerializer(books, many=True).data

入力をデシリアライズする

逆方向の処理では、受信したJSONをdata=で渡します。serializerがクライアントから送られたデータを解析し、後でバリデーションできるようになります。

ser = BookSerializer(data=request.data)

バリデーションする

入力を信頼する前にis_valid()を呼び出します。すべてのフィールドのチェックを実行し、validated_dataを設定するか、返却できるエラーを格納します。

ser.is_valid()
ser.errors

安全に保存する

有効なデータであれば、save()がモデルインスタンスを作成または更新します。serializerは1つのオブジェクトで変換と保存の両方を処理できます。

ser.save()

API用のフォーム

serializerはAPI用のフォームだと考えてください。HTMLを一切使わずに、データの出力、入力データのバリデーション、保存を行います。

クイックチェック

モデルserializerの.dataから何を取得できますか。

まとめ:Serializer

ModelSerializerがモデルをJSONに変換し、受信データをバリデーションして保存する、APIの橋渡し役であることを学びました。🔁

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Serializers:ModelからJSONへ」レッスンは無料ですか?

はい。「Serializers:ModelからJSONへ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「Serializers:ModelからJSONへ」で何を学びますか?

オブジェクトをJSONとの間で変換します ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Serializers:ModelからJSONへ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. DRFのインストールと設定
  2. Serializers:ModelからJSONへ
  3. APIViewと関数ベースの@api_view
  4. Browsable APIとステータスコード
← Django Academyに戻る