3/3
- シリアライザー
- シリアライズするためのライブラリ
- 入力でもらった情報を隠しながらDBに伝える
- 出力においても隠す
- アプリ/serializers.py
- 新規作成する
-
from rest_framework import serializersfrom .models import Taskfrom rest_framework.authtoken.models import Token
class UserSerializer(serializers.ModelSerializer):class Meta:model =Userfields=['id','username','password']extra_kwargs={'password':{'write_only':True,'required':True}}
def create(self,validated_data):user=User.objects.create_user(**validated_data)Token.objects.create(user=user)return user
class TaskSerializer(serializers.ModelSerializer):
created_at=serializers.DateTimeField(format="%Y-%m-%d %H:%M",read_only=True)updated_at=serializers.DateTimeField(format="%Y-%m-%d %H:%M",read_only=True)
class Meta:model =Taskfields=['id','title','created_at','updated_at'] - serializersはrest_frameworkに含まれている
- Userモデル
- django.contrib.auth.modelsに含まれているモデル
- セキュリティの高い認証システム
- django.contrib.auth.modelsに含まれているモデル
- Token
- rest_framework.authtoken.modelsに含まれている
- ユーザのuserIDとpasswordを認証してtokernを返す
- rest_framework.authtoken.modelsに含まれている
- メタクラス
- class文の持つ定義する機能」を定義する機能
- fields
- メタクラスでfields=[]として定義することでモデルを使うカラムを定義
-
python - Django: what do model and fields do in meta class? - Stack Overflow
- extra_kwards
- より詳細に制限をする
- 辞書型
- キーに個別のフィールドを
- 制限を要素におき制限自体も辞書型とする。
- write_only:True
- 書き込み専用
- required:True
- 要求されても返さない
- write_only:True
- より詳細に制限をする
- バリデーション
- 意図しない値が入力された時エラーを発生させる
- validated_data
- そもそもテンプレート化してるっぽい