【问题标题】:Are PermissionsMixin and PermissionRequiredMixin the same?PermissionsMixin 和 PermissionRequiredMixin 是一样的吗?
【发布时间】:2019-06-02 15:22:58
【问题描述】:

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

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

【问题讨论】:

  • 没有。 PermissionMixinmodels 的 mixin,而 PermissionRequiredMixin 是视图(和其他一些对象)的 mixin。
  • 谢谢! @WillemVanOnsem Van Onsem

标签: python mixins django-2.0


【解决方案1】:

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

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

这些不是函数,而是PermissionsMixinmodels 的 mixin。

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

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

from django.contrib.auth.mixins import PermissionRequiredMixin

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

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

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

【讨论】:

    【解决方案2】:

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

    PermissionsMixin

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 2017-04-26
      • 2010-11-15
      • 2021-07-15
      • 2016-03-06
      • 2014-10-23
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多