PermissionsMixin 和 PermissionRequiredMixin 是否相同?

Are PermissionsMixin and PermissionRequiredMixin the same?

我想知道PermissionsMixin是否和PermissionRequiredMixin有相同的功能。

from django.contrib.auth.models import PermissionMixin
from django.contrib.auth.mixins import PermissionRequiredMixin

PermissionsMixin是模型的mixin,PermissionRequiredMixin是视图的mixin。

I want to know if PermissionsMixin has the same function as PermissionRequiredMixin.

这些不是函数,而是PermissionsMixinmodels.

的混入

PermissionsMixin [Django-doc] is a mixin for Django models. If you add the mixin to one of your models, it will add fields that are specific for objects that have permissions, like is_superuser, groups, and user_permissions. It also provides a set of utility methods to check if the model with this mixin has a given permission (for example with has_perm [Django-doc]. A typical model that subclasses this mixin is the User model [Django-doc].

另一方面,PermissionRequiredMixin [Django-doc] mixin 是一个 mixin,它提供了一种方便的方法来 检查 是否登录的用户具有所需的权限).例如:

from django.contrib.auth.mixins import PermissionRequiredMixin
<p>class MyView(<b>PermissionRequiredMixin</b>, View):
permission_required = ('polls.can_open', 'polls.can_edit')

这里我们定义了一个View,但是只有拥有这些权限的用户,才能访问视图。

这个 mixin 实现了一个 get_permission_required() 方法,它生成一个可迭代的权限来检查,以及一个 has_permission() 来检查用户是否拥有这些权限。您可以覆盖这些方法,例如,如果权限是 dynamic(例如取决于数据库中的数据)。

为了方便将 Django 的权限框架包含到您自己的用户中 class,Django 提供了 PermissionsMixin。这是一个抽象模型,您可以将其包含在用户模型的 class 层次结构中,为您提供支持 Django 权限模型所需的所有方法和数据库字段。

PermissionsMixin