这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战
一、简介
django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似)。
便于展现的序列化操作,我们需要在model添加外键、多对多情况。以下是新的models(请删除原有的数据库,重新migrate):
models.py
1 | Python复制代码from django.db import models |
二、使用
1.基本使用
在urls.py中添加新的角色url,以前的url为了减少干扰,在这里进行注释:
1 | Python复制代码from django.conf.urls import url |
views.py
1 | Python复制代码from rest_framework import serializers |
使用浏览器访问http://127.0.0.1:8000/api/v1/roles ,结果如下:
2.自定义序列化字段
当数据模型中有外键或者多对多时候,这时候就需要自定义序列化了
新增用户信息url
1 | Python复制代码from django.conf.urls import url |
UserinfoView和序列化类
1 | python复制代码class UserinfoSerializer(serializers.ModelSerializer): |
访问http://127.0.0.1:8000/api/v1/userinfo ,查看结果:
除了以上的Serializer,还可以使用ModelSerializer,ModelSerializer继承了serializer,其结果和上面示例一样:
1 | python复制代码class UserinfoSerializer(serializers.ModelSerializer): |
3.连表序列化以及深度控制
使用depth进行深度控制,越深其序列化的细读越高
1 | python复制代码class UserinfoSerializer(serializers.ModelSerializer): |
请求http://127.0.0.1:8000/api/v1/userinfo ,结果如下:
4.序列化字段url
urls.py新加入组url
1 | python复制代码urlpatterns = [ |
views.py
1 | python复制代码class UserinfoSerializer(serializers.ModelSerializer): |
此时访问组信息:http://127.0.0.1:8000/api/v1/group/1,结果如下:
在查看用户信息,此时生成的组就是超链接形式了(便于查看json数据,这里用postman发请求):
本文转载自: 掘金