6.ViewModel、面对对象与重构

本文探讨了在Python中如何使用ViewModel统一API接口,揭示伪面向对象的特征,并详细介绍了对YuShuBook模块的重构过程,强调了代码解释权反转的概念。同时,文章还对比了单页面应用与传统网站的差异。
摘要由CSDN通过智能技术生成

一. ViewModel

我们获取书籍数据的api, 一个是通过关键字参数, 一个是通过书籍isbn, 得到的数据结构并不相同, 我们想做成统一的接口方便调用。这就需要用到viewmodel

isbn查找: 

关键字查找 


使用viewmodel 


新建app/viewmodels/book.py:

class BookViewModel:
    @classmethod
    def package_single(cls, data, keyword):   # 单个的,即isbn查找
        returned = {
  'books': [],
                    'total': 0,
                    'keyword': keyword
                    }
        if data:
            returned['total'] = 1
            returned['books'] = [cls.__cut_bookdata(data)]
        return returned

    @classmethod
    def package_collection(cls, data, keyword): # 关键字查找
        returned = {
  'books': [],
                    'total': 0,
                    'keyword': keyword
                    }
        if data:
            returned['total'] = data['total']
            returned['books'] = [cls.__cut_bookdata(book) for book in data['books']]    
            # __cut_bookdata是处理单个book数据的, 这样使用就可以处理多个book数据了
        return returned

    @classmethod
    def __cut_bookdata(cls, data):   
    # 处理单个的数据方法, 这样package_singlepackage_collection都可以用。
    #不要想着定义个列表, 然后来的不管是多个数据还是单个数据,都放进去。这样的编码并不好。
        book = {
  'title': data['title'],
                'publisher': data['publisher&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值