serializer的两大特征

1.校检数据

2.序列化

首先创建apps/Serializer.py

在序列化里面导包

from rest_framework import serializers

from user.models import User

在Serializer里面写入

Serializer ,ModelSerializer

def address_validate(data):

# data:是用户提交的地址这个字段的数据(河南省 郑州市)

# 独立校验器

# raise serializers.ValidationError('请填写实际地址')

# 有错就抛出异常 # 没错就返回数据

return data

class UserSerializer(serializers.ModelSerializer):

# 1.独立校验器:重新设定字段, 替换掉模型中的设定, 重新设定地址的长度为5

# address_validate是自定义的数据校验1函1数1

address=serializers.CharField(max_length=255,min_length=5,validators=[address_validate])

# 2.单一字段验证(validate_字段名), 验证地址
def valudate_address(self,data):
if data=='测试':
raise serializers.ValidationError('请填写实际地址') # 有错就抛出异常
return data #没错就返回 # def validate_phone(self, data):
# # 不符合手机号格式 # raise serializers.ValidationError('手机号格式不正确')
# model = self.root.Meta.model
# num = model.objects.filter(phone=data).count()
# if num > 0:
# raise serializers.ValidationError('手机号已存在')
# return data # 3.所有属性验证器
def validate(self, attrs):
return attrs# 有问题报错
# 没问题返回数据
# attrs:{"username":"zhangsan", "phone":"18538752511", ....}
# 所有属性验证器 # self.context 中有request和view上下文
# self.context['view'].action 可以取到动作 # attrs 是需要序列化的数据
# raise serializers.ValidationError('xxx错误') class Meta:
model=User #指定表
# fields = ('id', ) # 临时添加字段也需要写在这里
fields='__all__' #所有字段
# exclude = ['id'] # 排除 id 字段
# read_only_fields = ('id',) # 指定字段为 read_only, # 扩展address: extra_kwargs = {} # 局部替换某些字段的设定, 或者新增设定
extra_kwargs = {
"address": {
"min_length": 5, # 给地址增加 最小长度限制
"default": '默认测试地址',
# 增加默认值
}}

继承ModelSerializer

        class Meta:
model = User
fields = ('id', 'username', 'is_active') # 临时添加字段也需要写在这里 # fields = '__all__' # 所有字段```

Django----Serializer序列化的更多相关文章

  1. Django:前后端分离 djangorestframework开发API接口 serializer序列化认证组件

    参考:https://blog.csdn.net/zhangmengran/article/details/84887206 目的: 使用serializer序列化器将QuerySet数据序列化为js ...

  2. django rest_framework 序列化组件详解

    为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到 ...

  3. 从django的序列化到rest-framework 序列化

    1.利用Django的view实现返回json数据 from django.views.generic import View from goods.models import Goods class ...

  4. 关于Django的序列化

    阅读目录 Django支持的序列化格式 Django的序列化 Django支持的序列化格式 1 2 3 4 Identifier Information xml Serializes to and f ...

  5. DRF框架之Serializer序列化器的反序列化操作

    昨天,我们完成了Serializer序列化器的反序列化操作,那么今天我们就来学习Serializer序列化器的最后一点知识,反序列化操作. 首先,我们定要明确什么是反序列化操作? 反序列化操作:JOS ...

  6. django的序列化

    关于django的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的Json格式 两种方法: 方法一:serializers: 缺点就是只能应用于对象 "&q ...

  7. Rest_framework Serializer 序列化 (含源码浅解序列化过程)

    目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...

  8. Django 之 序列化

    Django之序列化 关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式. serializers 1 2 3 4 5 from dj ...

  9. 【Django】序列化

    Django中序列化主要应用于将数据库中检索的数据返回给客户端用户,特别是Ajax请求一般返回为Json格式. * 1.from django.core import serializers** fr ...

  10. UNITY Serializer 序列化 横向对比

    UNITY Serializer 序列化 横向对比 关于序列化,无论是.net还是unity自身都提供了一定保障.然而人总是吃着碗里想着锅里,跑去github挖个宝是常有的事.看看各家大佬的本事.最有 ...

随机推荐

  1. python机器学习识别手写数字

    手写数字识别 关注公众号"轻松学编程"了解更多. 导包 import numpy as np import matplotlib.pyplot as plt %matplotlib ...

  2. 打印Sql查询语句

    如果在使用了yii的查询语句的话,可以打印本次的Sql,可以用 $model->find()->createCommand()->getRawSql();此语句返回的就是sql查询语 ...

  3. AE(After Effects)的简单使用——记一次模板套用的过程

    一.环境配置 操作系统:win10 64位 软件版本:AE16.11版 二.模板下载 可去 newcger 网站进行模板下载,常用都是免费的,很好用,很推荐 三.具体操作 1.模板素材替换 点击[文件 ...

  4. react中iconfont字体图标不显示问题

    如下图, 写四个圆圈,直接将iconfont的字体编码写在静态HTML结构中时显示没问题,然而明显这样的结构用循环写是更好的选择, 但是,页面上不能显示字体图片了,而是直接显示字体编码 原因是字体编码 ...

  5. 监控-Cat项目部署

    一.Cat的项目背景 CAT(Central Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统.美团点评基础架构部希望在基础存储.高性能通信.大 ...

  6. 记git一些基本用法

    git init        在合适的位置建一个文件夹,并在当前目录下右键打开    git Bash,利用git init把这个目录改成git可以管理的仓库 git add 要添加的文件名    ...

  7. Android基础——项目的文件结构(一)

    Android基础--项目的文件结构(一) Android视图与Project视图对比 [注]此项目文件结构仅限于Android Studio下的Android项目!!! 在Android Studi ...

  8. UNP第13章——守护进程

    1. 守护进程的启动方法 (1)系统初始化脚本启动,在系统启动阶段,按照如/etc目录或/etc/rc开头的目录中的某些脚本启动,这些守护进程一开始就有超级用户权限.如inetd,cron,Web服务 ...

  9. 一键SSH连接 = SSH密钥登陆 + WindowsTerminal

    本文记录如何利用SSH密钥登录和WindowsTerminal/FluentTerminal实现一键SSH连接 目录 一.在本地生成SSH密钥对 二.在远程主机安装公钥 三.在远程主机打开密钥登陆功能 ...

  10. Python input用户交互

    1.input(),阻塞等待用户输入内容并敲回车. 1 #-*- encoding:utf-8 -*- 2 3 name = input('请输入你的名字') 4 5 age = input('请输入 ...