如何使用 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)
请注意,您不是 想要测试您的用户是否属于给定组(假设该组具有特定权限)- 这是一种反模式。您只关心您的用户是否拥有所需的烫发,但是他拥有。
我想使用用户组中提供的 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)
请注意,您不是 想要测试您的用户是否属于给定组(假设该组具有特定权限)- 这是一种反模式。您只关心您的用户是否拥有所需的烫发,但是他拥有。