• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

定义-反序列化字段校验通过的新增数据和修改数据


Recommended Posts

一.新增数据的create方法

1.serializers.py代码示例

从rest _框架导入序列化程序

从学生导入模型

类学生序列化器(序列化器。串行器):

名称=序列化程序CharField(max_length=8,必需=真)

年龄=序列化程序IntegerField(max_value=120,必需=真)

性=连载IntegerField(默认值=1)

定义验证名称(自身,属性):

if attr=='老王':

引发序列化程序。验证错误('隔壁老王不能进)

返回属性

定义验证(自身,属性):

if attrs.get('name')=='张三和attrs.get('age')==26:

引发序列化程序。验证错误(' 26岁的张三不能进)

返回属性

定义创建(自身,已验证_数据):

stu_data=模型学生。对象。创建(* *验证数据)

返回斯图_数据

2.views.py代码示例:

从django.views导入视图

从django.http导入HttpResponse

从取消序列化程序导入学生序列化程序

从学生导入模型

导入数据

#在此创建您的观点。

班级学生视图(视图):

def post(自身,请求):

data=json.loads(request.body)

#将序列化的数据传入定义的反序列化类中,用数据参数接收

serializer=StudentSerializer(data=data)

序列化程序。is _ valid(raise _ exception=True)# raise _ exception=True该参数可以在校验失败时,直接报错

序列化程序。save()#在校验通过时,会直接执行学生材料编辑器类中的创造方法

返回HttpResponse(“确定")

2.修改数据的update方法:

serializers.py代码示例:

从rest _框架导入序列化程序

从学生导入模型

类学生序列化器(序列化器。串行器):

名称=序列化程序CharField(max_length=8,必需=真)

年龄=序列化程序IntegerField(max_value=120,必需=真)

性=连载IntegerField(默认值=1)

定义验证名称(自身,属性):

if attr=='老王':

引发序列化程序。验证错误('隔壁老王不能进)

返回属性

定义验证(自身,属性):

if attrs.get('name')=='张三和attrs.get('age')==26:

引发序列化程序。验证错误(' 26岁的张三不能进)

返回属性

定义创建(自身,已验证_数据):

stu_data=模型学生。对象。创建(* *验证数据)

返回斯图_数据

定义更新(自身、实例、已验证数据):

#利用反射,将获取的数据,进行更新

对于键,validated_data.items():中的值

setattr(实例,键,值)

#或者每个字段单独的更新

#实例。name=validated _ data。get('名称')

#实例。年龄=已验证_数据。get('年龄')

#实例。性别=已验证_数据。get(' sex ')

instance.save()

#保存后,将对象返回

返回实例

views.py代码示例:

从django.views导入视图

从django.http导入HttpResponse

从取消序列化程序导入学生序列化程序

从学生导入模型

导入数据

#在此创建您的观点。

班级学生视图(视图):

def post(自身,请求):

data=json.loads(request.body)

#将序列化的数据传入定义的反序列化类中,用数据参数接收

serializer=StudentSerializer(data=data)

序列化程序。is _ valid(raise _ exception=True)# raise _ exception=True该参数可以在校验失败时,直接报错

序列化程序。save()#在校验通过时,会直接执行学生材料编辑器类中的创造方法

返回HttpResponse(“确定")

定义put(自身,请求):

data=json.loads(request.body)

id=data.get('id ')

stu_obj=模特Student.objects.get(id=id)

serializers=StudentSerializer(实例=stu_obj,数据=数据)

序列化程序。is _ valid(引发异常=真)

序列化程序。save()#在校验通过时,会直接执行学生材料编辑器类中的更新方法

返回HttpResponse(“确定")

Link to comment
Share on other sites