Django中mixin使用

什么是mixin
mixin模式大致来说可以看成是多继承的一种。但是使用这种多继承的时候,为了防止混乱要注意分清主次(其实这种方式的多继承采用mixin的直译理解比较好,混入,补充合作完成的意思)
使用mixin模式要注意:
    首先它必须表示某一种功能,而不是某个物品,如同Java中的Runnable,Callable等
    其次它必须责任单一,如果有多个功能,那就写多个Mixin类
    然后,它不依赖于子类的实现
    最后,子类即便没有继承这个Mixin类,也照样可以工作,就是缺少了某个功能。
mixin是多继承的一种,多继承时程序的运行顺序从左到右按顺序查找。继承链是程序运行过程中自然形成的,及时多继承里右边的类中没有需要的方法,Python也可以通过某种方式查找到左边的类中调用对应的方法

Mixin实现

     view中如果觉得自带的post、get方法不够好,也可以重写post、get方法,这样就与函数式编程没有什么区别。有时需要前后端异步方式加载数据,就需要使用ajax来完成,这时就可以使用mixin来解决。

     使用mixin可以为class提供额外的功能,但它自身却不能单独使用的类. 在具有多继承能力的编程语言中, mixin可以为类增加额外功能或方法. 在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则:

  • Django自身提供的View永远在最右边
  • mixin依次在以上view的左边
  • mixin永远继承自Python的object类型
class ModelValidView(LoginRequiredMixin, AjaxResponseMixin, View):
    def __init__(self, model):
        self.model = model
    def post_ajax(self, request, *args, **kwargs):
        pass

推荐mixin库https://github.com/brack3t/django-braces

http://ccbv.co.uk/#version-2.2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值