Django REST Framework 序列化和校验 知识点

DRF序列化

  Django ORM对象 --> JSON格式的数据  序列化

  JSON格式的数据 --> Django ORM数据  反序列化

  需要两个工具:

from rest_framework.serializers import Serializer
from rest_framework.serializers import MoselSerializer 

  类比Django中的form组件

    Django form --> HTML表单

    HTML表单  --> ORM数据

  用法:

  many=True参数

  实例化 序列化器对象的时候, 添加many=True参数, 能实现序列化多个对象

  正向序列化用 read_only = True

  反向序列化用 write_ony = True

  source

category = serializers.CharField(source="get_category_display" read_only=True)

# Obj --> JSON
# Obj.title --> "书名"
# Obj.get_category_display() --> "Python"

  ModelSerializer

    和model一对一绑定的序列化类

  serializerMethodField字段

校验

   校验的规则3中方法

  1. 局部的校验方法

# 在serializer类中定义局部校验规则    # validate 加 字段名
    def validate_title(self, value):
        # value就是需要检验的这个字段的值
        """类似于Form组件的局部钩子"""
        if ‘红烧牛肉‘ in value:
            raise serializers.ValidationError(‘你是魔鬼吗?‘)
        else:
            return value

  2. 全局的校验方法

def validate(self, attrs):
    pass

  3. 自定义的校验函数

# 类似于Form组建中的自定义校验规则
title = serializers.CharField(max_length=32, validators=[my_heiheihei, ])

def my_heiheihei(value)
    pass

  校验规则由序列化对象的 is_valid 触发

 def post(self, request):
        # 1. 获取前端提交的数据
        # 1.1 APIView
        # self.request是谁?  不是Django原来的哪个request  self._request才是原来的request
        print(request.data)  # APIView 包装的数据
        # 2. 对数据做有效性校验
        ser_obj = BookModelSerializer(data=request.data)
        if ser_obj.is_valid():
            ser_obj.save()  # 调用的是BookSerializer类中的create方法,需要自己去实现
            # 3. 拿到序列化的数据去数据库创建新记录
            return Response("ok")
        else:
            # 返回校验失败的错误提示信息
            return Response(ser_obj.errors)

    

原文地址:https://www.cnblogs.com/konghui/p/10267390.html

时间: 2024-10-01 19:21:56

Django REST Framework 序列化和校验 知识点的相关文章

Django REST framework序列化

Django REST framework序列化 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式 models部分 from django.db import models class Book(models.Model): title = models.CharField(max_length=32) price = models.IntegerField() pub_date = models.DateFie

Django Rest framework序列化流程

目录 一 什么是序列化 二 Django REST framework配置流程之Serializer 三 Django REST framework配置流程之ModelSerializer 一 什么是序列化 序列化模型与序列化关系模型 序列化模型,顾名思义,即对 models 里的数据模型作序列化. 而序列化关系模型则是对 models 里数据模型中带有关系的如 ForeignKey, ManyToManyField 和 OneToOneField 字段作序列化. Django Rest Fra

Django Rest Framework --- 序列化组件

一.序列化组件的作用 在前后端分离开发时,前端与后端用来交互的数据的格式是一致的(数据格式为字符串的json数据),于是后端程序员在传递数据时,便要将数据封装成符合格式的数据,如果不借助方法,手动进行数据封装,会非常的浪费时间,在Django rest framework中的序列化组件帮我们解决了这个问题. 二.Django自带的序列化组件 from django.core import serializers def test(request): book_list = Book.object

Django REST framework(序列化)

准备工作 一丶配置虚拟环境 1.安装虚拟包:pip install virtualenv 2.创建一个用于虚拟环境的目录,并进入到目录下 3.执行 python -m venv 虚拟环境名 4.执行 virtualenv 虚拟环境名 5.在目录下激活虚拟环境 windos下:source env\Scripts\activate linux下:source env/bin/activate 6.停止虚拟环境 deactivate指令或者关闭终端 二丶用于代码高亮显示pip install pyg

django rest framework 序列化组件总结

序列化组件总结 一. 序列化组件本质上为了实现前后端分离,而进行json序列化的一个组件形式,极大方便了解析数据的作用 二. 所有序列化是基于APIView 解析器实现的,通过内部的多继承关系方便实现进行数据序列化的实现 三 使用方式 1.基于APIView 引入  from rest_framework.views import APIView 2.返回的请求用 Response  from rest_framework.response import Response 3.开始进行创建序列化

django restful framework 一对多方向更新数据库

目录 django restful framework 序列化 一 . 数据模型: models 二. 序列化: serializers 三, 视图: views 四, 路由: urls 五. 测试 : test django restful framework 序列化 案例: 一个网域domain可以绑定多台服务器主机assets, 但是一台服务器只能绑定一个网域. 数据模型之间关系适用于一对多. 一 . 数据模型: models 定义 assets 模型:apps/assets/models

Django REST framework+Vue 打造生鲜超市(一)

一.项目介绍 1.1.掌握的技术 Vue + Django Rest Framework 前后端分离技术 彻底玩转restful api 开发流程 Django Rest Framework 的功能实现和核心源码分析 Sentry 完成线上系统的错误日志的监控和告警 第三方登录和支付宝支付的集成 本地调试远程服务器代码的技巧 1.2.课程系统构成 vue前端项目 django rest framework 系统实现前台功能 xadmin后台管理系统 vue部分: API 接口 Vue 组件 与a

Django Rest Framework源码剖析(八)-----视图与路由

一.简介 django rest framework 给我们带来了很多组件,除了认证.权限.序列化...其中一个重要组件就是视图,一般视图是和路由配合使用,这种方式给我们提供了更灵活的使用方法,对于使用者而言不同的视图具有不同的功能,这样我们可以根据需求定制自己视图.以下是官网传送门:http://www.django-rest-framework.org/api-guide/views/ 在之前的文章中,由于参杂了权限.认证等(如果不了解请看博客的以前的文章),但在本章中基本可以不使用,所进使

Python前后端分离开发Vue+Django REST framework实战

链接:https://pan.baidu.com/s/1YNIw7ayEvRfU9Og4zv97iA 提取码:加Q:1642261812  V信:SH66668888QH 获取 第1章 课程介绍 介绍课程目标.通过课程能学习到的内容.和系统开发前需要具备的知识 1-1 课程导学 第2章 开发环境搭建 介绍系统开发所需的开发环境的搭建, 包括前后端开发所需要的IDE. mysql.navicat.nodejs.cnpm的配置等, 还介绍了如何配置python虚拟环境 2-1 pycharm的安装和