千家信息网

Serializer和ModelSerializer如何使用

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,这篇文章主要为大家展示了"Serializer和ModelSerializer如何使用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Serializer和
千家信息网最后更新 2024年10月17日Serializer和ModelSerializer如何使用

这篇文章主要为大家展示了"Serializer和ModelSerializer如何使用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Serializer和ModelSerializer如何使用"这篇文章吧。

Django REST Framework API返回结果解析

学习了之前的文章我们知道如何使用Django REST framework框架设计API,我还使用Schools APP设计了一个API

除此之外,我们还可以查看API的OPTIONS,然后可以得很多信息,比如说第一行请求行'HTTP 200 OK',表示请求成功,第二行Allow表示允许的请求方式,Content-Type:application/json表示发送端发送的实体数据的数据类型。
还有下面的json数据,name表示接口名字、description详细描述、renders表示可解析的形式,parses是服务器端可解析的三种方式

我们还可以在app的views.py的类中可以给API添加注释,如比给前端人员的接口说明等信息,且注释可以在Django REST Framework的页面中显示;

class AllSchoolsView(APIView):    """    这是AllSchoolsView的返回结果    """    def get(self, request):        schools = School.objects.all()        schools_serializer = SchoolSerializer(schools, many=True)        return Response(schools_serializer.data)

然后重新运行项目,然后刷新页面,我们就可以得到如图的效果:

Django REST Framework的登录

首先为了避免在Django REST Framework 中登录时报错'CSRFCheck' object has no attribute 'process_request',我们需要将Django升级到1.11.6以上的版本:pip install django==1.11.6,记得是两个等号哟。然后用户就可以使用之前创建的超级用户成功登录了

Restful API的方法

GET(SELECT):从服务器取出资源(一项或多项);

POST(CREATE):在服务器新建一个资源;

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源);

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性);

DELETE(DELETE):从服务器删除资源;

HEAD:获取资源的元数据;

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的;

实现POST接口

首先编辑serializer.py文件,将SchoolSerializer类中的字段与School表中的字段一一对应,保证数据库写入不会报错;

from rest_framework import serializersfrom .models import Schoolclass SchoolSerializer(serializers.Serializer):    name = serializers.CharField()    desc = serializers.CharField()    location = serializers.CharField()    create_time = serializers.DateTimeField(default=datetime.now,)    course_numbers = serializers.IntegerField()    def create(self, validated_data):        """        Create and return a new `Snippet` instance, given the validated data.        """        return School.objects.create(**validated_data)

然后编辑views.py文件,修改AllSchoolsView类,新增一个post提交方法,在代码中打上断点;

from rest_framework.views import APIViewfrom .serializer import SchoolSerializerfrom rest_framework.response import Responsefrom rest_framework import statusclass AllSchoolsView(APIView):    """    这是AllSchoolsView的返回结果    """    def get(self, request):        schools = School.objects.all()        schools_serializer = SchoolSerializer(schools, many=True)        return Response(schools_serializer.data)    def post(self, request):        # 将request.data的数据进行校验        # request.data会拿到post提交的字段        serializer = SchoolSerializer(data=request.data)        # 如果验证字段合法        if serializer.is_valid():            # 直接保存到数据库,这里会调用GoodsSerializer的create方法            serializer.save()            return Response(serializer.data, status=status.HTTP_201_CREATED)        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

然后可以使用postman进行提交请求,先在Body中选择x-www-form-urlencoded的提交方式,然后填写好相应字段的值

然后发送send,在post方法中把得到的数据封装且进行序列化,返回到序列化对象serializer中,最后通过save方法保存到数据库中,然后我们访问http://127.0.0.1:12345/school/all/,得到的数据是不是增加了一条新的记录呀

还可以直接在浏览器的页面中进行post请求,先选择提交格式,然后创建相应数据,直接点击POST,如果返回HTTP 201 Created,则数据已经被创建,写入了数据库中;

以上是"Serializer和ModelSerializer如何使用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

数据 资源 服务器 服务 字段 方法 数据库 信息 内容 客户 客户端 接口 方式 篇文章 结果 页面 学习 登录 成功 属性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 杭州蓝翔网络技术有限公司 平度游戏软件开发推荐 SPSS数据库如何排序 连接数据库和接收数据的代码 一年级网络安全宣传班会 汽车租赁系统数据库 有关网络安全产品的信息 数据库设计论文4000字 四川省研究生网络安全录取线 万方数据库英文文献只能导出 逻辑表 数据库怎么写 木马程序盗窃服务器管理员帐号 长城宽带服务器 软件开发自定义文件后缀 linux服务器virbr0 市公安局网络技术 云数据库签到积分数据表设计 计算机网络技术所需技能与能力 举行网络安全培训 软件开发能力和薪资怎么定义 写论文数据库表需要全部写完吗 顺义区会计软件开发要求 广东天缘网络技术有限公司 云罗互联网科技 网易版我的世界连接不到服务器 软件开发和大数据有关系吗 攻城狮服务器管理 软件开发需求分析人员 网络安全重点布局项目标志性建筑 软件开发学徒泉州
0