如何使用 django 组来设置组权限

How to use django groups in order to set group permission

我想使用用户组中提供的 django 组。在管理面板中设置的 django 组权限。假设我创建了两组教师和学生。我想在通用视图级别设置权限。有些视图只能由学生或教师查看或编辑。这些权限在 django admin 中设置如下:

现在我创建了一个createview如下:

class CreateQuestionView(LoginRequiredMixin,generic.CreateView):
 model =   Question
 success_url= reverse_lazy('questions:list')
 fields = ['title','description' ]
 def form_valid(self,form):
  form.instance.user = self.request.user
  #self.object.save()
  return super().form_valid(form)

现在我希望只有教师组可以访问此视图。我无法找到实现组 permission.Something 的正确方法,例如 @group_required 在这种情况下可能有效 link 但找不到任何相关文档。什么是正确的实现方式?

你想要the PermissionRequiredMixin:

class CreateQuestionView(LoginRequiredMixin, PermissionRequiredMixin, generic.CreateView):
    permission = "yourapp.perm_code_name"
    model =   Question
    success_url= reverse_lazy('questions:list')
    fields = ['title','description' ]
    def form_valid(self,form):
        form.instance.user = self.request.user
        #self.object.save()
        return super().form_valid(form)

请注意,您不是 想要测试您的用户是否属于给定组(假设该组具有特定权限)- 这是一种反模式。您只关心您的用户是否拥有所需的烫发,但是他拥有。