Django REST framework学习笔记(三)

mac2024-04-17  32

serializer.py '''反序列化器的create和update操作''' class Student2(serializers.Serializer): name = serializers.CharField(max_length=10, min_length=2) age = serializers.IntegerField(max_value=150, min_value=0) sex = serializers.CharField(required=True, validators=[check_user_sex]) def validate_name(self, data): '''验证单个数据''' if data == 'root': raise serializers.ValidationError('这个字段不能为root') # 验证方法结束时必须返回本次验证的内容 return data def validate(self, attrs): '''一次验证多个数据''' age = attrs.get('age') if age <= 10: raise serializers.ValidationError('年龄不能小于10') return attrs ''' 在完成验证数据之后,drf提供了request和response来接收和返回数据, 1. create 2. update ''' def create(self, validated_data): '''接受客户端提交的数据''' name = validated_data.get('name') age = validated_data.get('age') sex = validated_data.get('sex') instance = Student.objects.create( name=name, age=age, sex=sex ) return instance def update(self, instance, validated_data): '''用于在反序列中对于验证完成的数据进行保存更新''' name = validated_data.get('name') age = validated_data.get('age') sex = validated_data.get('sex') instance.name = name instance.age = age instance.sex = sex instance.save() return instance views.py class StudentView2(View): '''create''' def post(self, request): # 模拟用户提交数据 data = { 'name': 'cccccccc', 'age': 11, 'sex': '女', } serializer = Student2(data=data) # raise_exception抛出错误信息,并阻止程序继续往后运行 result = serializer.is_valid(raise_exception=True) serializer.save() return HttpResponse('ok') class StudentView3(View): '''update''' def put(self, request, id): student_obj = Student.objects.get(id=id) data = { 'name': 'cccccccc', 'age': 18, 'sex': '女', } serializer = Student2(instance=student_obj, data=data) result = serializer.is_valid(raise_exception=True) serializer.save() return HttpResponse('ok')

 

最新回复(0)