美文网首页python相关
(自用防再踩坑记录1)实现名字直接转化为拼音并添加入接口

(自用防再踩坑记录1)实现名字直接转化为拼音并添加入接口

作者: 十万个榴莲饼 | 来源:发表于2018-12-29 14:54 被阅读0次

    首先安装汉字转拼音的第三方包,十分好用的包> pip install xpinyin

    在serializers.py中的相应的serializer中添加如下代码:

    from xpinyin import Pinyin
    p = Pinyin()  
    class exp_userpro_list_Serializer(serializers.ModelSerializer):    #exp_userpro为数据库表
        """
        用户列表页显示的信息
        """
        name_change_to_pinying = serializers.SerializerMethodField(help_text='名字转拼音')   #添加字段(此字段数据库中不存在)
        def get_name_change_to_pinying(self, obj):  #定义此字段需要返回的数据
            return p.get_pinyin(obj.name)   #将名字转化为拼音
        class Meta:
            model = exp_userpro   #数据库表
            exclude = ('password','user_permissions','last_login','is_superuser','first_name','last_name',
                       'is_staff','date_joined','cardID','birthDate','gender',
                       'add_time','groups')
    

    这是详情页面的serializer,也需要添加把名字转化成拼音的字段

    class exp_userproSerializer(serializers.ModelSerializer):
        """
        用户信息
        """
        name_change_to_pinying = serializers.SerializerMethodField(help_text='名字转拼音')
        def get_name_change_to_pinying(self, obj):
            return p.get_pinyin(obj.name)
     
        class Meta:
            model = exp_userpro
            exclude = ('password','user_permissions','last_login','is_superuser','first_name','last_name',
                       'is_staff','date_joined','cardID','birthDate','gender',
                       'add_time','groups',)
    

    在views.py中相应的viewset中添加代码:

    class exp_userproViewSet(viewsets.ModelViewSet):
        """
            list
                用户列表页
            create:
                创建用户信息表(需要创建两份)
            delete:
                删除用户信息
            update:
                修改用户信息
            partial_update:
                修改用户信息
        """
        authentication_classes = (TokenAuthentication, SessionAuthentication)
        permission_classes = [IsAuthenticated, ]
        pagination_class = StandardResultsSetPagination
        filter_backends = (DjangoFilterBackend,)
        filter_class = exp_userproFilter
     
        def get_queryset(self):
            # return exp_userpro.objects.filter(id=self.request.user.id)
            return exp_userpro.objects.filter(is_active=True)
     
        def get_permissions(self):
            if self.action == "retrieve":
                return [permissions.IsAuthenticated()]
            return []
     
        def get_serializer_class(self):
            if self.action == 'list':
                return exp_userpro_list_Serializer   #返回我们上面写的那个list_serializer
            return exp_userproSerializer
     
        def perform_create(self, serializer):
            serializer.save()
    

    添加完成后,如果没错那么应该添加成功了

    效果:接口页面如下

                "id": "2338727a-3db8-4d93-8564-d5c03027f236",
                "timestampCreate": "2018-01-09T22:49:38.343494",
                "name_change_to_pinying": "huang-fei-hu", 
                 #此为添加的字段,将name转化为拼音,注意此字段在数据库中不存在
                "is_active": true,
                "oldId": "None",
                "name": "黄飞虎",
                "name_pinyin": "Huang Feihu",
                "username": "hhuangfh",
                "mobile": "**********",
                "email": "**********.com"
    

    -------完

    相关文章

      网友评论

        本文标题:(自用防再踩坑记录1)实现名字直接转化为拼音并添加入接口

        本文链接:https://www.haomeiwen.com/subject/skzulqtx.html