**
ViewSetMixin累源码分析
我们主要是来看下为什么通过url配置和ModelViewSet几行代码,就能实现request的restful协议请求
ModelViewSet类继承关系比较复杂,我先抛出一张简陋的父子关系继承图
**
ModelViewSet继承MiXin 我们实现api接口数据请求时,可以利用mixins模块来实现,也就是ModelViewSet的4个继承父类,分别实现了增加、获取单条数据、更新数据、删除销毁数据、获取所有表数据的功能,之前的mixins源码简单分析过,这里就不在一一重复赘述,后续的分析中,会拿出一个来配合GenericViewSet类代码进行分析
ModelViewSet 源码
class ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet):
"""
A viewset that provides default `create()`, `retrieve()`, `update()`,
`partial_update()`, `destroy()` and `list()` actions.
"""
pass
Serializers.py
from rest_framework import serializers
from demoapp import models as dm1model
class UserSer(serializers.ModelSerializer):
class Meta:
#指定模型类
model = dm1model.User
#指定序列化字段
fields = "__all__" #所有字段
#fields = ("username","home") #其中某几个字段
#序列化深度,是否序列化外键
depth = 1
#只序列化字段
read_only_fields = ('id', 'bread', 'bcomment')
#额外参数,修改字段设置
#extra_kwargs = {
# 'age': {'min_value': 0, 'required': True},
# 'hight': {'min_value': 0, 'required': True},
#}
url.py
from django.urls import path,include,re_path
from demo3app.views import *
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register("user",UserModelView)
urlpatterns = [
path("",include(router.urls)),
# path("index1/",Index1.as_view()),
]
Vi