Django----Serializer序列化
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序列化的更多相关文章
- Django:前后端分离 djangorestframework开发API接口 serializer序列化认证组件
参考:https://blog.csdn.net/zhangmengran/article/details/84887206 目的: 使用serializer序列化器将QuerySet数据序列化为js ...
- django rest_framework 序列化组件详解
为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到 ...
- 从django的序列化到rest-framework 序列化
1.利用Django的view实现返回json数据 from django.views.generic import View from goods.models import Goods class ...
- 关于Django的序列化
阅读目录 Django支持的序列化格式 Django的序列化 Django支持的序列化格式 1 2 3 4 Identifier Information xml Serializes to and f ...
- DRF框架之Serializer序列化器的反序列化操作
昨天,我们完成了Serializer序列化器的反序列化操作,那么今天我们就来学习Serializer序列化器的最后一点知识,反序列化操作. 首先,我们定要明确什么是反序列化操作? 反序列化操作:JOS ...
- django的序列化
关于django的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的Json格式 两种方法: 方法一:serializers: 缺点就是只能应用于对象 "&q ...
- Rest_framework Serializer 序列化 (含源码浅解序列化过程)
目录 Rest_framework Serializer 序列化 序列化与反序列化中不得不说的感情纠葛 三角恋之 save/update/create 四角恋之 序列化参数instance/data/ ...
- Django 之 序列化
Django之序列化 关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式. serializers 1 2 3 4 5 from dj ...
- 【Django】序列化
Django中序列化主要应用于将数据库中检索的数据返回给客户端用户,特别是Ajax请求一般返回为Json格式. * 1.from django.core import serializers** fr ...
- UNITY Serializer 序列化 横向对比
UNITY Serializer 序列化 横向对比 关于序列化,无论是.net还是unity自身都提供了一定保障.然而人总是吃着碗里想着锅里,跑去github挖个宝是常有的事.看看各家大佬的本事.最有 ...
随机推荐
- QQ 邮箱日历提醒
偶然发现 QQ 邮箱有日历的功能,而且可以设置农历并且每年邮件 + 短信 + 微信提醒.这下重要的日子(eg:生日...)就不会忘记啦! 1.找到日历 2.历史提醒 3.新建时间 4.设置时间 5.勾 ...
- 给萌新HTML5 入门指南(二)
本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 上一篇我们已经为大家介绍了HTML5新增的内容和基础页面布局,这篇会继续向大 ...
- Flink的DataSource三部曲之二:内置connector
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- “谈谈MySQL的基数统计”
** 目录 推荐阅读原文链接 一.基数是啥? 二.InnoDB更新基数的时机? 三.基数是估算出来 四.持久化基数 四.如何主动更新基数? Hi,大家好!我是白日梦. 今天我要跟你分享的话题是:&qu ...
- leetcode70word-search
题目描述 给出一个二维字符数组和一个单词,判断单词是否在数组中出现, 单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻.同一单元格的字母不能多次使用. 例如: 给出的字符数组= [↵ [&q ...
- Spark编程练习题
import org.apache.spark.sql.SparkSessionval spark = SparkSession.builder().appName("Spark SQL b ...
- 庐山真面目之三微服务架构Consul版本实现
庐山真面目之三微服务架构Consul版本实现 一.简介 在上一篇文章<庐山真面目之二微服务架构NGINX版本实现>中,我们已经探讨了如何搭建基于Nginx 网关的微服务 ...
- 白话科普系列——最好用的浏览器 Chrome,你用了么?
市面上的浏览器多种多样,而浏览器的王者--IE 浏览器,它在 2002 年市场份额高达 95.4%.直到后续 Firefox,Safari,Chrome 相继问世才动摇了 IE 浏览器的地位,其中 C ...
- 7.1range函数和冒泡排序
range函数和冒泡排序 一.range函数 在Python开发应用中 range函数相当重要,也比较常用: 首先看range函数的原型: range(start, end, scan) 参数 ...
- 16flask错误处理
1,A secret key is required to use CSRF 使用CSRF需要一个密钥,也就是说没有设置秘钥