我正在使用Django 2.0。 我现在已经创建了用户组,我想使用用户组来限制视图。 哪个是解决此问题的最佳方法?
答案 0 :(得分:0)
from django.contrib.auth.decorators import login_required, permission_required
@method_decorator([
login_required,
permission_required('staff.tools_can_access', reverse_lazy('staff:login'), True)], name='dispatch')
class ToolsView(FormView):
pass
首先将权限分配给您创建的组,然后更改permission_required参数。
使用通用视图将是完美的选择
答案 1 :(得分:0)
如果您希望只有属于特定组的用户才能访问view
,则可以使用UserPassesTextMixin
。
在下面的示例中,某个用户只有属于YourGroupName
组才能访问该视图(我之所以这样命名,是因为我不知道您是如何命名的)
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin
class ToolsView(LoginRequiredMixin, UserPassesTestMixin, FormView):
# ...
def test_func(self):
return self.request.user.groups.filter(name='YourGroupName').exists()
如果要使用基于函数的视图而不是基于类的视图,则可以执行以下操作:
from django.contrib.auth.decorators import login_required, user_passes_test, login_required
@login_required
@user_passes_test(lambda u: u.groups.filter(name='YourGroupName').exists())
def my_view(request, pk):
# ....