简介:restful restful就是一个接口的规范,也就是面向资源的url
序列化要传参instance(传模型类对象),反序列化要传参data(传request中的数据)
因为是增删改查查,所以一个View不能有两个get方法,那么就分开两个视图类
一个放不需要传id的BookView, 一个放需要传id的BookDetailView,这样url中正则带id的参数和不带id的也就都分开了
导包:
from rest_framework.views import APIView
from rest_framework import serializers
from rest_framework.response import Response
序列化器可以和view试图放在一起但是,为了解耦,最后都会单独放一块;这之中的字段名必须和模型类中的字段名相同,否则走不通,并且,is_valid()方法就是在检查serializer的这些个字段中的要求进行检验,但是有可能会和模型类中的要求起冲突,这点注意!
这五个中不需要用到serializer.save()的方法
删除方法delete:
直接找到模型类对象进行删除即可,直接返回空即可
查询所有方法get:
先用.all()查出query_set再构建序列化器对象
查看单个方法get:
就用objects.get(pk=id)得到模型类对象
赋给序列化器的instance,再用其序列化结果serializer.data返回就可以了
需要用到serializer.save()的方法
添加方法post:
当serializer.is_valid()是True,执行serializer.save()的时候,会执行序列化器类中的create()函数,该函数需要被实现,create的参数是self和validated_date;并且需要返回更新后的,模型类对象
更新方法put:
注意实例化put方法的序列化器时,instance和data都需要传,因为需要知道传什么,还需要知道向谁传参
当serializer.is_valid()是True,执行serializer.save()的时候,会执行序列化器类中的update()函数,该函数需要被实现,update的参数是instance、validated_data; 并且需要返回模型类对象,注意需要返回更新成功的模型类对象
用 Meta来绑定配置模型类,这样就不需要手动地的在序列化器中写Book.objects等来查询了
并且定义了create、update方法(说明自动return),且覆盖率一对一,一对多的情况。
且试图函数一行都不用改,同时还能选择字段和自己重写重定义字段,关键字是source='原字段'
如图中就是将pub_date重写之后再将原来的pub_date排除