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

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

最佳答案

不,PermissionsMixin是模型的混合,PermissionRequiredMixin是混合在视图中的混合。


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


这些不是函数,而是类。 PermissionsMixin是模型的混合。

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

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

from django.contrib.auth.mixins import PermissionRequiredMixin

class MyView(PermissionRequiredMixin, View):
    permission_required = ('polls.can_open', 'polls.can_edit')


因此,这里我们定义了View,但是只有具有这些权限的用户才能访问该视图。

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

08-07 05:41