一个简单的drf框架

自己写的一个简单的drf框架

框架的目录结构如下:

在这里插入图片描述

generic.py

class GenericAPIView(object):
    queryset = None
    serializer_class = None

    def get_queryset(self):
        """
            获取去所有查询集
        :return:
        """
        return self.queryset

    def get_object(self):
        """
            获取查询集中的单一数据
        :return:
        """
        for instanse in self.queryset:
            if instanse.id == 1:
                return instanse

    def get_serializer(self,data=None):
        # 获取呀指定序列化器对象

        serializer = self.get_serializer_class()
        return serializer(data=data)

    def get_serializer_class(self):
        # 返回序列化器
        return self.serializer_class
from mixin import CreateModelMixin
class CreateAPIView(GenericAPIView,CreateModelMixin):
    """
        保存拓展类子类
    """
    def post(self,request):
        return self.create(request)

Mixin.py

class CreateModelMixin(object):
    """
        保存拓展类
    """
    def create(self,request):
        # 1、获取数据
        data = request
        # 验证数据
        ser = self.get_serializer(data=data)
        ser.is_valid()
        # 保存数据
        ser.save()
        # 返回结果
        return ser.data

serialzier.py

class BaseSerialier(object):
    """
        基础序列化器
    """

    def __init__(self, instance=None, data=None):
        self.instance = instance
        self.valid_data = data

    def validate(self, attrs):
        """
            多个字段验证方法
        :param attrs:
        :return:
        """
        pass

    def is_valid(self):
        """
            验证
        :return:
        """
        data = self.validate(attrs=self.data)
        self.valid_data = data
    def save(self):
        """
            保存更新方法
        :return:
        """
        if self.instance is not None:
            self.instance = self.update(instance=self.instance, validate_data=self.data)
        else:
            self.instance = self.create(validate_data=self.data)
    def update(self, instance, validate_data):
        pass
    def create(self, validate_data):
        pass
    @property
    def data(self):
        return {'btitle':'python'}

view.py

from generic import GenericAPIView,CreateAPIView
from serialzier import BookSerialzier
from mixin import CreateModelMixin

class BookView(CreateAPIView):

    queryset = [{'btitle':'1111','id':1},{'btitle':'2222','id':2}]
    serializer_class = BookSerialzier
request='python'
BookView().post(request)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值