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