问题描述
我在阅读有关 Django UserPassesTestMixin
mixin 的文章时,遇到了术语 CBV Mixin
。这是什么,它有什么用? CBV
Mixin 是一种通用类型的 mixin,除了 Django 之外,是否还有其他任何框架中的 CBV
mixin?
解决方法
CBV,在 Django 中,代表“基于类的视图”。这些是框架作为 Python 类而不是函数提供的一组视图。请参阅 docs 以获得更完整的说明。
它们的部分实现是通过组合定义特定行为的 mixin 类和基类(例如 View
基类)来实现的。同样,docs 包含有关标准/包含的 mixin 的其他详细信息。例如,呈现模板以产生响应的常见行为在 TemplateResponseMixin 中定义。
CBV
只是类视图的快捷方式,它是 Django 中任何在代码中定义为类的视图的通用术语,尤其是从 django.views.View
继承的视图。>
所以 CBV Mixin
只是可以在基于类的视图中使用的任何混合。
CBV
或 Class Based Views
是来自 django.views.generic
的预定义类,为 ListView
、CreateView
等特定任务开发。CBV Mixins
与普通的 CBV
一样,但它们旨在为 CBV
添加一些限制,如 LoginRequiredMixin
和 UserPassesTestMixin
,有关详细信息,请参阅此链接:
1- https://docs.djangoproject.com/en/3.2/topics/class-based-views/
2- https://docs.djangoproject.com/en/3.2/topics/class-based-views/mixins/
3- https://djangodeconstructed.com/2020/04/27/roll-your-own-class-based-views-in-django/