Flask Academy · レッスン

モデルのスキーマを定義する

モデルに対応するフィールドを宣言します

レッスン 2/413 ステップ

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

スキーマとは何か

Schemaは、データが持つべきフィールドを列挙する Python クラスです。モデルに対応しますが、入力と出力専用の独立したものとして定義します。

Schema を継承する

すべてのスキーマは、Marshmallow の基底 Schemaクラスを継承します。UserSchema のようにモデル名を付けると、目的が一目で分かります。

class UserSchema(Schema):
    pass

フィールドを宣言する

クラスの中で、fieldsモジュールの属性を追加します。それぞれが、シリアライズされた JSON 出力に現れるキーを定義します。

id = fields.Int()
name = fields.Str()

フィールド型が重要

データに合ったフィールド型を選びます。Int、Str、Bool、Float、DateTime などです。型によって、値の形式とバリデーション方法が決まります。

active = fields.Bool()
score = fields.Float()

日付を正しく扱う

DateTimeフィールドを使うと、Python の datetime が自動的に整った ISO 文字列へシリアライズされます。ビューのあちこちに手動のフォーマット処理を書く必要はありません。

created_at = fields.DateTime()

必須フィールドを指定する

フィールドに required=True を渡すと、値が欠けている場合に load が失敗します。これが、スキーマに組み込まれたバリデーションの第一歩です。

email = fields.Str(required=True)

秘密情報を除外する

公開したいフィールドだけを列挙してください。password_hashを宣言しなければ、スキーマからレスポンスに漏れることはありません。

data_key で名前を変更する

snake_case の属性から camelCase の JSON を作りたい場合は、data_keyを使って内部名を別の外部キーに対応付けます。

first_name = fields.Str(data_key="firstName")

dump_only フィールド

id のように、出力には含めるものの入力では受け付けないフィールドがあります。dump_onlyを指定して読み取り専用にしてください。

id = fields.Int(dump_only=True)

スキーマをインスタンス化する

再利用するインスタンスを1つ作成します。user_schema は UserSchema() とします。後でリスト全体をシリアライズするときは many=True を渡します。

user_schema = UserSchema()

1つのスキーマで2つの役割

この1つのクラスで、モデルを JSON にダンプすることも、JSON を検証済みデータとしてロードすることもできます。データの形を一度定義すれば、両方向で利用できます。

クイックチェック

出力では id を読み取れるようにしつつ、入力では決して受け付けたくありません。

まとめ

Schemaのサブクラスでは、モデルに対応する型付きフィールドを宣言します。required、dump_only、data_key などのオプションで、入力と出力の内容を正確に定義できます。

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「モデルのスキーマを定義する」レッスンは無料ですか?

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

「モデルのスキーマを定義する」で何を学びますか?

モデルに対応するフィールドを宣言します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「モデルのスキーマを定義する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 手作りJSONが破綻する理由
  2. モデルのスキーマを定義する
  3. オブジェクトをJSONにダンプする
  4. 入力ペイロードを読み込み検証する
← Flask Academyに戻る