Django框架中序列化与反序列化与字段验证

1.Django序列化

DRF的核心 就是 前后端分离的核心

  • 前后端分离开发的核心:

    将模型转换为json 称之为 序列化
    将json转换为模型 称之为 反序列化
    

2.创建模型

            '''models.py'''

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=32)
    age = models.IntegerField(default=18, null=True)
    home = models.CharField(max_length=32, null=True)

    class Meta:
        db_table = 'user'

3.序列化、反序列化、字段验证

  • 为了得到模型里的字段,序列化器中的字段应与模型类中的字段名一致
      '''serializers.py'''

from .models import *
from .views import *
from rest_framework import serializers

class UserSerializers(serializers.Serializer): 

    username = serializers.CharField(max_length=32)
    age = serializers.IntegerField()       
    home = serializers.CharField(max_length=32)
      
    # 添加数据
    '''
       validated_data:接收的数据
    '''
    def create(self, validated_data):
        return User.objects.create(**validated_data)
      
    # 更新数据
    def update(self, instance, validated_data):
        '''
            instance:数据库中原值
            validated_data:接收的新值
            如果接收到新值,更新数据库中的旧值,如果没有不更改
        '''  
        instance.username = validated_data.get('username',instance.username)
        instance.age = validated_data.get('age',instance.age)
        instance.home = validated_data.get('home',instance.home)
        instance.save()
        return instance

    '''
       单一字段验证:验证用户名
       validate_字段名:必须是字段名
       如果用户名不是张三,就抛出错误
    '''
    def validate_username(self, attrs):
        if attrs != '张三':
            raise serializers.ValidationError('不是本人')
        return attrs
         
posted @ 2020-10-27 19:24  Daniel*  阅读(347)  评论(0编辑  收藏  举报