zoukankan      html  css  js  c++  java
  • 0023 DRF框架开发(10 把模型字典传到前端)

      模型字典主要是指在模型设计过程中对于每个字段的verbose_name和help_text

      verbose_name:标示字段显示的中文名

      help_text:标示字段帮助信息

      我们需要把这两个字段传到前端,让前端据此显示字段的中文名和帮助信息。让前端不必自己为字段命名,从而减少前端对业务的理解。也就是说:前端根据后端提供的数据显示就行了,不需要理解业务。

    1 增加模型字典

      考虑到多表关联,对已存在模型字典的,则在原有字典上增加,否则新建一个字典来增加。

    from django.apps import apps
    
    
    # 重新定义返回值,增加了每个字段的verbose_name和help_text
    def build_model_dict(app_name, model_name, redefined_data):
        field_objs = apps.get_model(app_name, model_name)._meta.fields
        # 考虑多表关联时需要取多个表的数据字典
        if not redefined_data.data.get('table_info', None):
            redefined_data.data['table_info'] = {}
        for i in range(len(field_objs)):
            redefined_data.data['table_info'][field_objs[i].name] = {
                'verbose_name': field_objs[i].verbose_name,
                'help_text': field_objs[i].help_text,
            }
        redefined_data.data.move_to_end('table_info', last=False)
        redefined_data.data.move_to_end('count', last=False)
        return redefined_data
    

    2 增加序列化器

    from rest_framework import serializers
    from nucleus.models import BookInfo
    
    
    class BookInfoSerializer(serializers.ModelSerializer):
        """
        图书序列化器
        """
    
        class Meta:
            model = BookInfo
            # 此处的顺序,控制前端的显示顺序
            fields = '__all__'
    

    3 增加视图

      特别要注意的是,DRF返回值是一个有序字典OrderedDict类型。

    from rest_framework.generics import GenericAPIView, mixins
    
    
    class BookInfoViewSet(GenericAPIView, mixins.ListModelMixin):
        """
        图书视图
        """
        queryset = BookInfo.objects.all()
        serializer_class = BookInfoSerializer
    
        def get(self, request):
            ret_data = build_model_dict('nucleus', 'PublisherInfo', self.list(request))
            ret_data = build_model_dict('nucleus', 'BookInfo', ret_data)
            return ret_data
    

      

      

  • 相关阅读:
    mysql一些基本操作
    redis的简单使用2
    redis的基本conf
    redis的简单使用
    $.ajax()方法详解(转)
    流行的9个Java框架介绍: 优点、缺点等等
    数据库查询,显示为树形结构(easyui+SSM)
    JAVA-汉字转换成汉语拼音(pinyin4j-2.5.0-sources.jar)
    Jquery EasyUI 中ValidateBox验证框使用讲解(转)
    EasyUI验证扩展
  • 原文地址:https://www.cnblogs.com/dorian/p/12446762.html
Copyright © 2011-2022 走看看