我有一个自定义用户模型。我已经为用户注册创建了一个 api。以下是我的序列化程序。
class UserSerializer(serializers.ModelSerializer):
email = serializers.EmailField(
required=True,
validators=[
UniqueValidator(queryset=get_user_model().objects.all())
]
)
password = serializers.CharField(min_length=8)
class Meta:
model = get_user_model()
fields = ('email', 'password')
extra_kwargs = {'password': {'write_only': True}, }
def create(self, validated_data):
email = validated_data.pop('email')
password = validated_data.pop('password')
user = get_user_model().objects.create_user(email, password, **validated_data)
return user
这是我的看法:
class Registration(generics.CreateAPIView):
serializer_class = UserSerializer
queryset = get_user_model().objects.all()
有两个输入email
和password
。 password
字段作为 write_only 字段给出。但是在创建用户之后,api 返回散列密码。如何防止返回密码?
最佳答案
如果使用 extra_kwargs
,则不需要在序列化器上显式声明该字段,只需尝试以下操作:
class UserSerializer(serializers.ModelSerializer):
email = serializers.EmailField(
required=True,
validators=[
UniqueValidator(queryset=get_user_model().objects.all())
]
)
class Meta:
model = get_user_model()
fields = ('email', 'password')
extra_kwargs = {'password': {'write_only': True, 'min_length': 8}}
关于python - Django 休息框架,extra_kwargs 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48943331/