pop()' 在 Django Rest FrameWork 中有什么作用?

Tom*_*del 4 django python-3.x django-rest-framework

我想了解为什么这个函数用于

类 UserSerializer(serializers.ModelSerializer): profile = ProfileSerializer()

class Meta:
    model = User
    fields = ('username', 'email', 'profile')

def create(self, validated_data):
    profile_data = validated_data.pop('profile')
    user = User.objects.create(**validated_data)
    Profile.objects.create(user=user, **profile_data)
    return user
Run Code Online (Sandbox Code Playgroud)

abd*_*lim 10

get()pop()都返回项目,但 pop() 会将它们从源字典中删除,而 get() 将它们留在那里。

但是,如果您第二次尝试pop()相同的项目,您会发现这些项目已从您正在访问的字典中删除。

  • 当您需要一次验证检查并且不会进一步使用数据时,请使用pop() 。
  • 当您需要验证检查并将数据保存在数据库中时,请使用get() 。


Jon*_*tan 6

validate_data 是一个字典,.pop(key)搜索指定的键,如果找到则返回并删除它,否则抛出异常。