美文网首页
bpmappers库

bpmappers库

作者: imsilence | 来源:发表于2017-05-04 13:07 被阅读39次

简介

bpmappers库是将python对象转化为字典类型的库, 在对外提供数据服务类型的功能开发用途较大,尤其后台使用django开发,bpmappers库简便将对象转化为dict类型,配和json.dumps功能对外提供json格式数据

安装

pip install bpmappers

使用

  • 类中属性为的基本类型

类的定义:

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

from bpmappers import Mapper, RawField

class PersonMapper(Mapper):
    name = RawField('name')
    age = RawField('age')

试验:

In [6]: me = Person('silence', 28)

In [7]: PersonMapper(me).as_dict()
Out[7]: {'age': 28, 'name': 'silence'}
  • 类中属性存在其他对象进行组合
class Blog(object):
    def __init__(self, content, author):
        self.content = content
        self.author = author
        
from bpmappers import DelegateField

class BlogMapper(Mapper):
    content = RawField('content')
    author = DelegateField(PersonMapper, 'author')

试验:

In [27]: blog = Blog('bpmappers test', me)

In [28]: BlogMapper(blog).as_dict()
Out[28]: {'content': 'bpmappers test', 'author': {'age': 28, 'name': 'silence'}}
  • 类属性存在由其他对象组成的列表
from bpmappers import ListDelegateField

class Group(object):
    def __init__(self, name, members):
        self.name = name
        self.members = members        

class GroupMapper(Mapper):
    name = RawField('name')
    members = ListDelegateField(PersonMapper, 'members')

试验:

In [34]: group = Group('python', [me])

In [35]: GroupMapper(group).as_dict()
Out[35]: {'name': 'python', 'members': [{'age': 28, 'name': 'silence'}]}
  • 需要将列表或者基本类型进行加上key并转化dict

from bpmappers import NonKeyField, NonKeyDelegateField, NonKeyListDelegateField

class ValueMapper(Mapper):
    value = NonKeyField()
    def filter_value(self):
        return str(self.data)

class ValueDelegateMapper(Mapper):
    value = NonKeyDelegateField()
    def filter_value(self):
        return self.data

class ValueListDelegateMapper(Mapper):
    value = NonKeyListDelegateField(PersonMapper)
    def filter_value(self):
        return self.data

试验:

In [45]: ValueMapper(1).as_dict()
Out[45]: {'value': '1'}

In [46]: ValueMapper([1]).as_dict()
Out[46]: {'value': '[1]'}

In [57]: ValueDelegateMapper(me).as_dict()
Out[57]: {'value': {'age': 28, 'name': 'silence'}}


In [61]: ValueListDelegateMapper([me]).as_dict()
Out[61]: {'value': [{'age': 28, 'name': 'silence'}]}
  • callback & after_callback & filter & after_filter & key_name
class Value(object):
    def __init__(self, value):
        self.value = value


class ValueMapper(Mapper):
    value = RawField('value',\
                        callback=lambda x:'(cb %s)' % x,\
                        after_callback=lambda x:'[after cb %s]' % x)
    
    def filter_value(self, value):
        return '<filter %s>' % value
        
    def after_filter_value(self, value):
        return '{after_filter %s}' % value
        
    def key_name(self, name, value, field):
        return 'namespace:%s' % name

试验:

In [77]: ValueMapper(Value('test')).as_dict()
Out[77]: {'namespace:value': '{after_filter [after cb (cb <filter test>)]}'}

执行顺序:
1.filter
2.callback
3.after_callback
4.after_filter

  • django model转化
from bpmappers import djangomodel

class PersonModelMapper(djangomodel.ModelMapper):
    class Meta:
        model=Person
        exclude=['id']

试验:

In [77]: PersonModelMapper(Person.objects.get(pk=1)).as_dict()

相关文章

  • bpmappers库

    简介 bpmappers库是将python对象转化为字典类型的库, 在对外提供数据服务类型的功能开发用途较大,尤其...

  • 公司数据库逻辑

    pro库 drds库 通道库 查询库 pg库 bi库 tidb库 odps查询 pro库和drds库是线上数据库 ...

  • Lua库函数概览

    Lua库函数概览数学库 table库 字符串库 IO库 os库 调试库

  • Swift 静态库调研

    一、关于库的背景知识1、静态库和动态库静态库动态库系统动态库Cocoa Touch Framework静态库 v....

  • iOS 创建静态库(.a)

    静态库(.a) 文章类型: 学习笔记 1. 静态库简介 库的概念: 什么是库? 库的分类: 库的存在形式: 静态库...

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • iOS 静态库和动态库的制作

    静态库和动态库 一、静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和...

  • 动态库与静态库相互连接

    动态库--动态库 场景:App --> 动态库A --> 动态库 B 存在问题:动态库B应该的路径 = 动态库A的...

  • Python解析库

    Python解析库 目录一、lxml库二、BeautifulSoup库三、PyQuery库 一、lxml库 教程:...

  • HCMediator组件化详解

    组件化创建流程库 组件化需要创建私有spec库(索引库)、HCMediator库(App中介库)、其他组件库 私有...

网友评论

      本文标题:bpmappers库

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