我最近有一个django问题 - 其中一个答案让我感到难过:
https://stackoverflow.com/a/10608687/1061426
我已经阅读了django doco,但是无法弄清楚mixin与所询问的内容有什么关系,或者答案所指的是什么。
所以,我搜索了“django mixin教程”,偶然发现了一个名为dajax和dajaxice的东西。好吧,我撒谎,我碰到了这个博客:
http://www.pythondiary.com/blog/Apr.15,2012/stay-tuned-django-ajax-tutorial.html
我的问题是: 什么是mixins?它们如何与ajax调用相关?它们用于ajax以外的东西吗?为什么我要使用dajax或dajaxice或其他一些django addin框架,而不仅仅是使用简单的django来处理ajax?
此外,没有dajax标记,但是stackoverflow有一个dajaxice标记...这是否意味着dajaxice是The Way To Go?
干杯,
答案 0 :(得分:4)
Mixins是一种通用的面向对象编程概念。它们与Django或Dajax等没有任何关系。但是,Django和Dajax一样,也可以使用mixins。
一般来说,“mixin”只是一个字面意思与另一个类混合的类。它通常不会自行执行任何操作,而只是将功能添加到另一个类。 Django的“抽象”模型概念就是mixin的一个例子。你永远不会实例化一个抽象模型。相反,其他模型继承自抽象模型,获得其所有功能,并且实际上是实例化的那些子类。
Django的基于类的视图(这就是你在这里提到的答案)也使用了mixins。例如,大多数基于类的视图都继承自TemplateResponseMixin
。这个类本身不是一个视图,除了基于类的视图继承之外,你永远不会使用它。它只是将模板呈现为响应的所有功能的封装,因此在功能上可以“混入”所有各种视图而不会违反DRY(不要重复自己)。
答案 1 :(得分:2)
不,mixins与Ajax没有任何关系。
mixin只是一个类,可以用作另一个类的多重继承的一部分。 Django在其基于类的视图中广泛使用它们 - 有些类提供(例如)显示表单或模型列表的基本功能,并且您打算将它们与您自己的类混合:创建自己的代码来实现您的自己对该功能的扩展,同时继承一个或多个mixin。
我从未使用过Dajax,但我认为它还使用mixins在视图中提供Ajax处理的基本实现。