没有合适的资源?快使用搜索试试~ 我知道了~
一. create优化 在serializer序列化中,我们通过创建序列化器对象的方式地简化了视图函数的代码,前端传入的数据通过反序列化操作进行了各种数据校验,代码如下: from django.http import JsonResponse from django.views import View import json from .models import Project from .serializers import ProjectsSerializer class ProjectsPage(View): ''' 类视图 ''' def post(self,
资源详情
资源评论
资源推荐
Django serializer优化类视图的实现示例优化类视图的实现示例
一一. create优化优化
在serializer序列化中,我们通过创建序列化器对象的方式地简化了视图函数的代码,前端传入的数据通过反序列化操作进行了各种数据校验,代码如下:
from django.http import JsonResponse
from django.views import View
import json
from .models import Project
from .serializers import ProjectsSerializer
class ProjectsPage(View):
'''
类视图
'''
def post(self, request):
input_data = json.loads(request.body)
serializer_obj = ProjectsSerializer(data=input_data)
if not serializer_obj.is_valid():
return JsonResponse({"code": 1, "res": "error", "msg": serializer_obj.errors})
obj = Project.objects.create(**input_data)
ser_obj = ProjectsSerializer(instance=obj)
return JsonResponse(ser_obj.data, status=201)
可以看到,这里创建了两个序列化器类对象,一个serializer_obj用于反序列化参数校验(用data接受前端参数),一个ser_obj用于序列化输出(用instance接受模型类对象),其实可以去掉ser_obj,然
后调用serializer_obj的save()方法,save()方法会自动调用序列化器类对象中定义的create方法
def post(self, request):
"""
post请求,新增数据
:param request:
:return:
"""
try:
data = json.loads(request.body, encoding='utf-8')
except Exception as e:
result = {
"msg": "参数有误",
"code": 0
}
return JsonResponse(result, status=400)
ser_obj = ProjectsSerializer(data=data)
try:
ser_obj.is_valid(raise_exception=True)
except Exception as e:
result = {"msg": "参数有误"}
result.update(ser_obj.errors)
return JsonResponse(result, status=400)
ser_obj.save()
resp = {"msg": "创建成功"}
resp.update(ser_obj.data)
return JsonResponse(resp, status=201)
序列化器类中的create方法需要提前定义,该方法是父类的create方法,我们可以进行重写,父类方法源码如下:
def create(self, validated_data):
return [
self.child.create(attrs) for attrs in validated_data
]
重写父类的create方法,并返回模型类对象
def create(self, validated_data):
obj = Project.objects.create(**validated_data)
return obj
使用postman验证结果:
weixin_38653443
- 粉丝: 9
- 资源: 902
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0