Agile育成ブログ
未来を変える喜びを
Django Rest Framework

Django-rest-frameworkその2


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490

Model に紐づく Field を Serializer のフィールドとして自動的に定義してくれる
modelをUserModel
fieldsはレスポンスで表示する内容を設定します。
extra_kwargsは既存のフィールドに属性を追加することができます。’write_only’:Trueとしている理由はSerializer から値を入れたいけど、読み出しはしたくないためです。また、パスワードの入力を必須にしています。

create_userをvalidataにすることでハッシュ化してデータベースに保存することができる
create(),update()メソッドは、serializer.save()が呼ばれた時にどのようにインスタンスを作成・変更するかを規定する。

create()メソッド

validated_dataには、バリデーションを通過したデータが格納されます

ModelSerializer

パスワードのフィールドをハッシュ化して登録する

from rest_framework import serializers
from .models import Task
from django.contrib.auth.models import User
from rest_framework.authtoken.models import Token

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('id','username','passsword')
        extra_kwargs = {'password':{'write_only':True,'required':True}}

    def create(self,validated_data):
        user = User.objects.create_user(**validated_data)
        Token.object.create(user=user)
        return user

You cannot copy content of this page