一:HyperlinkedIdentityField(用的很少):传三个参数:第一个路由名字,用来反向解析,第二个参数是要反向解析的参数值,第三个参数:有名分组的名字

-1 publish = serializers.HyperlinkedIdentityField(view_name='ttt',lookup_field='publish_id',lookup_url_kwarg='pky')
-2 view_name:路由的别名,lookup_field:根据表的哪个字段,来拼路径,lookup_url_kwarg:反向解析有名分组的名字
-3 写路由:url(r'^publish/(?P<pky>\d+)', views.Publish.as_view(),name='ttt'),
-4 实例化序列化类的时候,需要把request对象传过去
book_ser=BookSerializer(ret,many=True,context={'request': request})  xx=HyperlinkedIdentityField(view_name='路由名字',look_up_field='publish_id',lookup_url_kwarg='pky')

  xx=http://127.0.0.1:8001/publish/1


二:序列化组件的数据校验

  1、类比forms组件

   2、字段是否必填,通过required,来控制 authors=serializers.CharField(required=False)

   3、数据校验,生成一个序列化类的对象
      对象.is_valid()
   4、新增数据:
      对象.save()
   5、修改数据:
      在生成对象的时候,需要传instanse=查询出来的对象
      对象.save()

生成序列化类对象的时候,把要校验的数据(字典:前端传过来的)传过来
ser=BookSerializer(data=request.data)
ser.is_valid()
显示中文:error_messages={'required': '该字段必填'}

三:序列化组件数据校验功能的钩子函数

  1、局部钩子函数(value就是这个字段的值)

def validate_字段名(self, value):
#拿到值,就可以进行判断了
#如果通过,把value值返回,
#如果不通过,抛 ValidationError 异常

  2、全局钩子函数(value是验证通过的所有数据)

def validate(self, value):
#取出数据,进行判断
#如果通过,把value值返回,
#如果不通过,抛 ValidationError 异常

四:序列化组件的反序列化和保存

  1、保存

ser=BookSerializer(data=request.data)
ser.save()---->向数据库中插一条数据

  2、更新

ser=BookSerializer(data=request.data.instance='要更新的对象')
ser.save()---->向数据库中插一条数据

Django day26 HyperlinkedIdentityField,序列化组件的数据校验以及功能的(全局,局部)钩子函数,序列化组件的反序列化和保存的更多相关文章

  1. django基础之day09,创建一个forms表单组件进行表单校验,知识点:error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }}

    利用forms表单组件进行表单校验,完成用户名,密码,确认密码,邮箱功能的校验 该作业包含了下面的知识点: error_messages,label,required,invalid,局部钩子函数,全 ...

  2. (32)forms组件(渲染自建规则:局部钩子函数和全局钩子函数)

    要达成渲染自建规则 1.局部钩子函数(某个字段,自定意义规则,不如不能以sb开头,数据库已存在等) 2.全局钩子函数(校验两次密码是否一致) 3.使用css样式 register.html <! ...

  3. django重写form表单中的局部钩子函数

    from django import forms from django.core.exceptions import ValidationError from jax import models c ...

  4. (32)forms组件(数据校验)

    forms组件的用处 1.就是用来做数据校验的 2.渲染页面 3.渲染错误信息(和局部刷新同效果) 数据校验 要使用forms组件必须要写一个类继承forms组件 urls.py from bbs01 ...

  5. Vue生命周期 钩子函数和组件传值

    Vue生命周期 钩子函数 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等. 同时在这个过程中也会运行一 ...

  6. 基于Ajax提交formdata数据、错误信息展示和局部钩子、全局钩子的校验。

    formdata重点: 实例化FormData这个类 循环serializeArray可以节省代码量 图片要用$('#id')[0].files[0]来获得 加上contentType:false和p ...

  7. Django序列化组件与数据批量操作与简单使用Forms组件

    目录 SweetAlert前端插件 Django自带的序列化组件 批量数据操作 分页器与推导流程 Forms组件之创建 Forms组件之数据校验 Forms组件之渲染标签 Forms组件之信息展示 S ...

  8. [Django REST framework - 序列化组件、source、钩子函数]

    [Django REST framework - 序列化组件.source.钩子函数] 序列化器-Serializer 什么是rest_framework序列化? 在写前后端不分离的项目时: 我们有f ...

  9. Django学习——分页器基本使用、分页器终极用法、forms组件之校验字段、forms组件之渲染标签、forms组件全局钩子,局部钩子

    内容 1 分页器基本使用 2 分页器终极用法 3 forms组件之校验字段 1 前端 <!DOCTYPE html> <html lang="en"> &l ...

随机推荐

  1. session--保持登录20分钟,常用与用户登录状态

    思路:request  与 session 两个作对比 1. . . 2. 3.

  2. Platform 获取主机系统信息

    该模块用来访问平台相关属性. 常见属性和方法 1. import platform(pip install platform)   2.获取操作系统名称及版本号 def get_platform(): ...

  3. 什么是restful

  4. extract a page from a multiple pages pdf on Ubuntu OS

    extract a page from a multiple pages pdf 1 extract a page from a multiple pages pdf use pdftk packag ...

  5. spring 学习(二)

    public interface BeanPostProcessor { @Nullable default Object postProcessBeforeInitialization(Object ...

  6. Garden of Eden

    Garden of Eden Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  7. mybatis源码阅读-执行一个sql的流程(九)

    图解 图片来源:https://my.oschina.net/zudajun/blog/670373 Mapper接口调用原理 我们整合成Spring  直接使用Mapper就能执行对应的sql 表现 ...

  8. MongoDB怎么快速的删除数据库数据?

    我的mongodb里有10+数据库.现在需要重置这个环境,得到干净的没有数据的MongoDB.怎么快速安全的删除这些数据库数据呢? 记得首先备份你的数据库mongodump -o bakfolder ...

  9. HDU 1573 解同余模线性方程组

    题目意思很直接就是一道裸的解线性同余模方程组的题目 #include <cstdio> #include <cstring> using namespace std; #def ...

  10. [codevs 2488]绿豆蛙的归宿(拓扑排序)

    题目:http://dev.codevs.cn/problem/2488/ 分析:这题有个特殊的地方,就是每个边都有可能走到,所以就是每个边的权值*每个边的概率,所以只要求概率,拓扑一下就可以了.