设计总结
- 校验用户数据
例如传入参数是否存在,格式是否正确,是否可重复等判断; - 将前端传入的请求数据转换(json格式)转换为模型类对象;反序列化;
- 反序列化:
将格式如json,xml转换为程序中的类型;
将json格式的字符串转换为Django中的模型类对象;
- 反序列化:
#1. 先将json格式数据转换为嵌套字典列表
json_data = request.body.decode('utf-8')
python_data= json.loads(json_data,encoding='utf-8')
#2.将字典转换为模型类对象
project = Projects.objects.create(**python_data)
- 操作数据库;
- 将模型类对象转换为响应的数据(json格式)
- 序列化:
将程序中的类型转换为json,xml;
Django中的模型类对象转换为json格式的字符串;
- 序列化:
#将其余数据格式转为前端需要的json数据类型
return JsonResponse(one_dict, safe=False)
1. 序列化
首先思考下:内存中的字典、列表、集合以及各种对象,如何保存到一个文件中?
- 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列。所以必须把数据额转换为字节序列,输出到文件,这就是序列化,反之,从文件的字节 序列恢复到内存中,就是反序列化。
- 反序列化则相反
序列化在Json中: - json().dump:把数据转成json格式字符串并写入文件
- json().dumps:读取文件数据,并转成json格式字符串
2.增删改查的步骤
- 增
校验请求参数 -> 反序列化查询到的数据 -> 保存数据 -> 将保存的对象序列化并返回 - 删
判断要删除的数据是否存在 -> 执行数据删除 - 改
判断要修改的数据是否存在 -> 校验请求参数 -> 反序列化查询到的数据 -> 保存数据 -> 将保存的数据序列号并返回 - 查
查询数据库 -> 将查询到的数据序列化并返回
痛点
- 代码冗余极其严重,不符合优开发风格(代码能少写就少写)
- 数据校验非常麻烦,且可复用性差
- 编码没有统一的规范,杂乱无章的感觉
- 仅支持json格式的传参,不支持form表单传参
- 仅能返回json格式的数据,其他类型不支持
- 列表页视图没有分页,过滤,排序功能