Python &引用;试图获取序列化程序`UserCreateSerializer`上的字段`username`的值时发生get-KeyError`

Python &引用;试图获取序列化程序`UserCreateSerializer`上的字段`username`的值时发生get-KeyError`,python,django,django-rest-framework,django-allauth,Python,Django,Django Rest Framework,Django Allauth,我有一个用户注册视图 视图: 序列化程序: class UserCreateSerializer(ModelSerializer): """ User register """ class Meta: model = User fields = [ 'username', 'wechat_num', 'password', ] e

我有一个用户注册视图

视图:

序列化程序:

class UserCreateSerializer(ModelSerializer):
    """
    User register
    """
    class Meta:
        model = User
        fields = [
            'username',
            'wechat_num',
            'password',
        ]
        extra_kwargs = {
            "password":{"write_only":True}
        }

    def create(self, validated_data):
        username=validated_data.pop('username')
        wechat_num = validated_data.pop('wechat_num')
        password=validated_data.pop('password')

        user_obj = User(
            username=username,
            wechat_num=wechat_num,
        )
        user_obj.set_password(password)
        user_obj.save()
        group=getOrCreateGroupByName(USER_GROUP_CHOICES.User)
        user_obj.groups.add(group)

        return validated_data
当我访问此APIView时,我将得到以下错误:

/api/users/register处的键错误/ “试图获取序列化程序
UserCreateSerializer
上的字段
username
的值时出现KeyError\n序列化程序字段的名称可能不正确,并且与
dict
实例上的任何属性或键都不匹配。\n原始异常文本为:'username'。”

但数据库的成功将创造用户

所有测试成功:


您正在弹出来自
验证的\u数据的所有字段,因此当您最终返回时,这些字段不会出现在字典中

username=validated_data.pop('username')
wechat_num = validated_data.pop('wechat_num')
password=validated_data.pop('password')
...

return validated_data
也许您想将其更改为:

username=validated_data['username']
wechat_num = validated_data['wechat_num']
password=validated_data.pop('password')
...
return validated_data

在定义类之后,您必须定义这些字段,这就是我所做的,它工作得很好。 类UserCreateSerializer(ModelSerializer): username=serializer.Cahrfield(最大长度)

你必须这样做。 我也犯了同样的错误。 我忘了定义密码

username=validated_data['username']
wechat_num = validated_data['wechat_num']
password=validated_data.pop('password')
...
return validated_data