安装
pip install djangorestframework
pip install django-filter
setting中的配置:在工程目录中的settings.py文件的INSTALLED_APPS中需要添加rest_framework
导入相关的信息:
from rest_framework import mixins, viewsets
这里StudentsEdit视图代码如下
from stu.serializers import StudentSerializer
class StudentsEdit( mixins.ListModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.CreateModelMixin,
viewsets.GenericViewSet):
#查询所有信息
queryset = Student.objects.all()
#序列化
serializer_class = StudentSerializer
mixins.ListModelMixin 查询全部信息 GET请求
mixins.RetrieveModelMixin 查询部分信息 GET请求
mixins.UpdateModelMixin为更新 put 要提前提交全部信息 PUTCH 更新部分信息
mixins.DestroyModelMixin 删除 DELETE 请求
mixins.CreateModelMixin 增加 POST请求
如果不添加这些字段,就无法达到你想要的功能。
这里 序列化的中间件serializers.py 文件 如下代码:
#虚拟化 接口返回数据的格式
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields =['s_name','s_tel']
之后我们在StudentSerializer中加上如下代码,对地址进行虚拟化:
def to_representation(self, instance):
data =super().to_representation(instance)
try:
data['s_addr'] =instance.studentinfo.i_addr
except Exception as e:
data['addr']=''
postman实验:
查询全部信息:
修改信息并保存,将访问方式选择为PATCH,选中body,将key为2的value改为妮妮,点击send,效果如下:
代表修改数据成功,并将访问方式改为get查询,名字也被改为妮妮。
删除数据,将访问方式改为delete,点击send,结果如下:
返回数据为空,代表数据删除成功,这时在用get方式访问,会出现如下字段:
{
"detail": "Not found."
}
如若访问全部数据,就不会再有id为2的这栏数据了。
增加数据,将访问方式改为POST,将body中key增加s_name和s_tel字段,其value值分别为:花花,14878996588。点击send,效果如下:
后再将方式改为get,显示全部信息,就会多出相应的数据。
这所有操作也可访问浏览器端,效果如下,结果不一一展示了。: