如何将视图限制为用户组?

Bil*_*hir 1 django django-rest-framework

我正在使用 Django 2.0 。我已经创建了用户组,现在我想使用用户组来限制视图。哪个是解决这个问题的最佳方法?

Taj*_*ngh 6

如果您只希望属于特定组的用户能够访问view,则可以使用UserPassesTestMixin. 下面的例子中,某个用户只有在他属于该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()
Run Code Online (Sandbox Code Playgroud)

如果你想使用基于函数的视图而不是基于类的视图,那么你可以这样做:

from django.contrib.auth.decorators import login_required, user_passes_test

@login_required
@user_passes_test(lambda u: u.groups.filter(name='YourGroupName').exists())
def my_view(request, pk):
    # .... 
Run Code Online (Sandbox Code Playgroud)