django rest框架实用程序
drf-util的Python项目详细描述
django rest框架-实用程序
在ebs项目中使用的一组util函数
安装:
pip install drf_util
功能
通过路径从对象获取值
定义:
gt(obj,path,default=None)
用法:
>>>data={"a":{"b":1}}>>>print(gt(data,'a.b'))1
通过键从dict获取递归值
定义:
get_object_labels(obj,path,default=None)
用法:
>>>data={"a":{"b":'title'},"c":'test'}>>>print(get_object_labels(data))['title','test']>>>data={"a":{"b":'title'},"c":'test'}>>>print(get_object_labels(data,['c']))['test']
使用chunk select的map()替代方法
定义:
fetch_objects(instance,function,select=50)
用法:
>>>defprint_name(obj):printobj.name>>>>>>fetch_objects(UserBigList.objects.order_by('id'),print_name,500)
选择第一个真值
定义:
any_value(items:list)
用法:
>>>print(any_value('',None,0,"Some text",50000))Sometext
递归合并两个dict
定义:
dict_merge(a,b,path=None)
用法:
>>>a={'a':{'c':1,'d':{'x':1}}}>>>b={'a':{'e':1,'d':{'y':1}}}>>>print(dict_merge(a,b)){'a':{'c':1,'e':1,'d':{'x':1,'y':1}}}
装饰师
序列化装饰器
定义:
serialize_decorator(serializer_method,preview_function=None,read_params=False)
用法:
classRestoreUserPassword(GenericAPIView):@serialize_decorator(RestoreUserSerializer)defpost(self,request,*args,**kwargs):returnResponse({"valid":True})
经理
- 节点经理
型号
- CommonModel-创建日期并更新日期
- nodeletemodel-删除日期
- AbstractJsonModel-使用语言
验证器
- 电话验证器-检查电话
- ObjistIsValueActudio-检查对象是否存在< List:UnjistValuiDava-检查对象是否不存在< /LI>
序列化程序
ElasticFilterSerializer-在序列化程序数据和ElasticFilters之间轻松转换
classTenderFilterSerializer(PaginatorSerializer,ElasticFilterSerializer):sort_criteria=[{"date_updated":{"order":"desc"}},"_score"]status=StringListField(required=False)date_start=serializers.DateField(required=False)date_end=serializers.DateField(required=False)deffilter_status(self,value):return{'terms':{'search_status.keyword':value}}deffilter_date_start(self,value):return{"range":{"tenderPeriod.startDate":{'gte':value}}}deffilter_date_end(self,value):return{"range":{"tenderPeriod.startDate":{'lte':value}}}classTenderListView(GenericAPIView):@serialize_decorator(TenderFilterSerializer)defget(self,request,*args,**kwargs):returnResponse(es_app.search_response(request.serializer,'tenders_index'))
筛选器序列化器-按序列化器字段筛选查询集
classServiceListQuerySerializer(FilterSerializer):name=CharField(required=False)tag_id=CharField(required=False)type=CharField(required=False)status=CharField(required=False)deffilter_name(self,value,queryset):returnqueryset.filter(name__icontains=value)deffilter_tag_id(self,value,queryset):returnqueryset.filter(tags__contains=value)deffilter_type(self,value,queryset):returnqueryset.filter(type=value)deffilter_status(self,value,queryset):returnqueryset.filter(status=value)classServiceListView(ListAPIView):serializer_class=ServiceListQuerySerializer@swagger_auto_schema(query_serializer=ServiceListQuerySerializer)@serialize_decorator(ServiceListQuerySerializer)defget(self,request):services=request.serializer.get_filter(request.valid,Service.objects.all())returnResponse(ServiceSerializer(instance=services,many=True).data)
changebleserializer-变形序列化程序
classContractNoticeCancelView(GenericAPIView):defput(self,request):serializer_meta={'id':PrimaryKeyRelatedField(queryset=Tender.objects.all(),required=True),'info':{'rationale':CharField(required=True),'description':CharField(required=True),},'documents':DocumentFileSerializer(required=True,many=True)}serializer=ChangebleSerializer(data=request.data)serializer.update_properties(serializer_meta)serializer.is_valid(raise_exception=True)returnResponse({"valid":True})
分页序列化程序-分页的序列化程序
classListUserNotification(GenericAPIView):@serialize_decorator(PaginatorSerializer)defget(self,request):notifications=NotificationEvent.objects.filter(user=request.user)returnrequest.serializer.response(notifications,serializer=ListNotificationSerializer)
另一个序列化程序
- stringlistfield-字符的简单字符串列表
- EmptySerializer-简单的空序列化程序
- id serializer-简单的id序列化程序
- stringlistfield-字符的简单字符串列表
- EmptySerializer-简单的空序列化程序
- id serializer-简单的id序列化程序