Django 2.0中的PermissionsMixin和PermissionRequiredMixin是同一件事吗?

时间:2019-01-07 23:22:57

标签: python django mixins

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

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

2 个答案:

答案 0 :(得分:1)

fsevents是模型的混合,PermissionsMixin是用于混合视图的混合。

  

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

这些不是 函数,而是 classes PermissionRequiredMixin模型的混合。

PermissionsMixin [Django-doc]是Django模型的混合。如果将混合添加到其中一个模型,它将添加特定于具有权限的对象的字段,例如PermissionsMixinis_superusergroups。它还提供了一组实用程序方法,用于检查具有该mixin的模型是否具有给定的权限(例如,具有has_perm [Django-doc]的权限。将其作为子类的典型模型是User model [Django-doc]

另一方面,PermissionRequiredMixin [Django-doc]混入是一种混入,它提供了一种方便的方法来检查(如果已登录的用户具有所需的权限)。例如:

user_permissions

因此,我们在此定义了from django.contrib.auth.mixins import PermissionRequiredMixin class MyView(PermissionRequiredMixin, View): permission_required = ('polls.can_open', 'polls.can_edit'),但是只有具有这些权限的用户才能访问视图。

此混入实现一个View方法,该方法生成可迭代的检查权限,以及一个get_permission_required(),用于检查用户是否具有这些权限。您可以覆盖这些方法,例如,如果权限是动态的(例如,取决于数据库中的数据)。

答案 1 :(得分:0)

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

<块引用>

PermissionsMixin