自己写的一个简单的drf框架
框架的目录结构如下:
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)