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. yii中的andFilterWhere使用说明

    当 WHERE 条件来自于用户的输入时,你通常需要忽略用户输入的空值. 例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱 输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件, ...

  2. .netcore3.1使用log4net/nlog记录日志

    .netcore3.1使用log4net/nlog记录日志 .netcore3.1与2.x之间很是有不少差异的.本来想通过ctrl+c,ctrl+v将在2.2中实现的简单日志记录搬到.netcore3 ...

  3. How to using code find the menu label of Menus【X++】

    // VAR Changed by Xie Yu Fan.Fandy 谢宇帆 static void XIE_FindMenu(Args _args) { Dialog dlg = new Dialo ...

  4. 2.5远程仓的库使用-2.7Git别名

    2.5 远程仓库的使用 查看远程仓库 git remote # -v 选项会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL 添加远程仓库 git remote add <sho ...

  5. angularJS 小记

    刚刚接触angularJS,网上学习了一遍菜鸟教程(http://www.runoob.com/angularjs/angularjs-tutorial.html),做了些基础知识的笔记. Angul ...

  6. php 批量脚本检测语法错误

    shell 根据参数检测 当前php项目下 的语法错误 #!/bin/bash function getdir(){ for el in `ls $1` do dir_file=$1"/&q ...

  7. Python_环境搭建_jupyterNotebook的使用

    # @ Author : Collin_PXY # 虚拟环境的创建及Jupyter Notebook的基本使用 # Anaconda 和 Jupter Notebook的使用: # 首先得需要安装 A ...

  8. 流量控制--3.Linux流量控制的组件

    Linux流量控制的组件 流量控制元素与Linux组件之间的相关性: traditional element Linux component 入队列 修订:从用户或网络接收报文 整流 class 提供 ...

  9. http 结构初始化

    简要而说:accept 到连接后 根据fd 构建一个connection  由于是 http : 重新封装为http-connection:同时设置fd的读回调: 回调函数根据是否是https/htt ...

  10. Python博文_爬虫工程师是干什么的

    程序员有时候很难和外行人讲明白自己的工作是什么,甚至有些时候,跟同行的人讲清楚"你是干什么的"也很困难.比如我自己,就对Daivd在搞的语义网一头雾水.所以我打算写一篇博客,讲一下 ...