Django 中的 CBV mixin 是什么?

What is a CBV mixin in Django?

我在阅读有关 Django UserPassesTestMixinmixin 的内容时,偶然发现了术语 CBV Mixin。这是什么,它有什么用? CBV Mixin 是一种通用类型的 mixin,除了 Django 之外的任何其他框架中是否有 CBV mixin?

CBV 只是基于 Class 的视图的快捷方式,它是 Django 中任何在代码中定义为 class 的视图的通用术语,尤其是一个继承自 django.views.View.

所以 CBV Mixin 只是可以在基于 Class 的视图中使用的任何 mixin。

CBV,在 Django 中,代表“class 基于视图”。这些是框架提供的一组视图,作为 Python classes 而不是函数。请参阅 docs 以获得更完整的解释。

它们的部分实现是通过组合 mixin classes 来定义特定行为的 classes,例如 View base class。同样,docs have additional details about the standard/included mixins. For example, the common behavior of rendering a template to produce a response is defined in TemplateResponseMixin.

CBVClass Based Views 并且是从 django.views.generic 预定义的 类 为特定任务开发的,例如 ListViewCreateView 等.
CBV Mixins 与普通的 CBV 一样,但它们旨在为 CBV 添加一些限制,例如 LoginRequiredMixinUserPassesTestMixin,有关更多详细信息,请参阅此链接:
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/