什么是 Django 中的 CBV mixin?

问题描述

我在阅读有关 Django UserPassesTestMixinmixin 的文章时,遇到了术语 CBV Mixin。这是什么,它有什么用? CBV Mixin 是一种通用类型的 mixin,除了 Django 之外,是否还有其他任何框架中的 CBV mixin?

解决方法

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

它们的部分实现是通过组合定义特定行为的 mixin 类和基类(例如 View 基类)来实现的。同样,docs 包含有关标准/包含的 mixin 的其他详细信息。例如,呈现模板以产生响应的常见行为在 TemplateResponseMixin 中定义。

,

CBV 只是类视图的快捷方式,它是 Django 中任何在代码中定义为类的视图的通用术语,尤其是从 django.views.View 继承的视图。>

所以 CBV Mixin 只是可以在基于类的视图中使用的任何混合。

,

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/