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序列化程序

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使Sonar maven插件示例工作   java Log4j2根记录器appender不工作   awt是否有其他方法可以获得整个屏幕的截图?(爪哇)   java我不知道为什么我在测试中得到了超出界限的索引。查拉特(1)   java在JavaFXCSS中fxtextfill和fxtextinnercolor之间有什么区别?   java Edittext输入小于100的百分比值,小数点后只能输入两位数字   java Oracle PreparedStatement NullPointerException适用于某些开发人员,但并非所有开发人员   amazon web services如何在java中获取S3中文件的最新时间   正在分析Java IndexOf找不到正确的数据   int[]到List<int>的java类型映射   apache commons Exec程序不包含在Java路径中   java使用Uri构建URL。建设者   Perl调用Java   java ScrollView阻止某些操作   使用eclipse将文件推送到安卓设备时遇到的java问题   java声明未与列映射的hibernate POJO布尔属性   java“赋值的左侧必须是一个变量”,因为有额外的括号   带有JSON约束的java Android POST请求