Serializers:ModelからJSONへ
オブジェクトをJSONとの間で変換します
「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 serializersModelSerializerを定義する
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- DRFのインストールと設定
- Serializers:ModelからJSONへ
- APIViewと関数ベースの@api_view
- Browsable APIとステータスコード