在子应用中创建seri序列化器
from .models import * class DepsSeri(serializers.Serializer): # 部门序列化器 # read_only:只能读取用于序列化 id = serializers.IntegerField(read_only=True) name = serializers.CharField(max_length=30) def create(self,validated_data): '''添加 **:不定长参数 *args: 接受的是列表或元组形式的参数 **kwargs:代表接受字典类型的参数 ''' print('**validated_data>>>>',**validated_data) # 向数据库添加 obj = Department.objects.create( **validated_data ) return obj
在视图View中使用序列化器
使用序列化器 添加数据 ↓
class DepartmentView(APIView): def post(self,request): ser = DepsSeri(data=request.data) if ser.is_valid(): # 此时说明校验成功 ser.save() return Response({ 'code': 200, 'msg': "添加成功" }) # 校验成功写入数据库 else: print("参数校验失败的原因是>>>>",ser.errors) return Response({ 'code':200, 'msg':"校验成功" })
使用序列化器 渲染数据
class DepartmentView(APIView): def get(self,request): """获取所有的部门""" deps_data = Department.objects.all() # 序列化输出 # 手动序列化 deps_list = [{'id':i.id,'name':i.name} for i in deps_data] return Response({ 'code':200, 'msg':"获取成功", 'data':deps_list })
用普通方法添加数据
class DepartmentView(APIView): def post(self,request): department_name = request.data.get('name') try: Department.objects.get(name=department_name) return Response({ 'code':400, 'msg':"部门已成立" }) except Exception as e: print(e) Department.objects.create(name=department_name) return Response({ 'code':201, 'msg':"部门成立成功" })