Python 你能给我看一个Django中基于类的视图的mixin的例子吗?有什么用?

Python 你能给我看一个Django中基于类的视图的mixin的例子吗?有什么用?,python,django,mixins,Python,Django,Mixins,我是Django新手,通常使用基于函数的视图。但我发现,将mixin与基于类的视图结合使用会更加强大。我做了很多研究,但我仍然对如何使用mixin感到困惑。为什么mixin是跨多个类重用代码的好方法 何时或为什么应该使用基于类的视图? 如果您能为我提供一个比文档中更好的示例或解释方式,我将不胜感激。我认为这方面的文档非常完美: 到目前为止,我就是这样使用混合器的 模型 对于模型:假设您希望在您拥有的每个模型中创建、更新字段。我会创建一个TimestableMixin,它看起来像这样 ()(为什么

我是Django新手,通常使用基于函数的视图。但我发现,将mixin与基于类的视图结合使用会更加强大。我做了很多研究,但我仍然对如何使用mixin感到困惑。为什么mixin是跨多个类重用代码的好方法

何时或为什么应该使用基于类的视图?


如果您能为我提供一个比文档中更好的示例或解释方式,我将不胜感激。

我认为这方面的文档非常完美:

到目前为止,我就是这样使用混合器的

模型 对于模型:假设您希望在您拥有的每个模型中创建、更新
字段。我会创建一个TimestableMixin,它看起来像这样

()(为什么
摘要
?)


类TimestableMixin(models.Model):
已创建\u at=models.DateTimeField(自动\u now\u add=True)
更新的\u at=models.DateTimeField(自动\u now=True)
类元:
抽象=真
然后我会用mixin扩展我的其他模型。继承
timestablemixin
的所有模型都将包含这些字段。请记住,您可以在
Post
模型中添加更多的mixin,如
TaggingMixin

class Post(timestablemixin,TaggingMixin):
...
意见 我发现自己并不经常在视图中使用它们,但有一次我使用它们反复从url获取相同的
context\u数据
和一些
kwargs

因此,我使用以下实现方法创建了一个
仪表板mixin

class DashboardMixin:

    def get_context_data(self):
        ...

# and then in the Views
class IndexView(DashboardMixin, View):
    ...
记住这一点-这就是python处理多重继承的方式


这就是我在Django中使用mixin的方式。您可以将其应用于框架的几乎每个方面。例如,在django的管理站点中,扩展并添加更多功能到
ModelAdmin
、表单中,等等。我链接的文档解释了所有这一切,当您阅读它时,您会对其有更好的了解。

但我看到,将mixin与基于类的视图结合使用功能更强大的基于类的视图并不一定更好。这是一个最近的指南,可能会说服您坚持使用基于函数的视图。谢谢,我写这篇文章是因为我在文档中看到:“通过使用mixin,提供了一个工具包,使基于类的通用视图比基于函数的视图更具可扩展性和灵活性。”