Django 管理员向特定组添加条目
Django admin add entry to specific groups
嘿!
我正在寻找添加不同用户和组条目的可能性。
在我的应用程序中,有不同的用户和不同的组,其中一个用户可以属于多个组。目标是某些组具有敏感数据,因此我只希望该组的成员能够读取条目,但某些数据应该在多个组中可用。
也应该可以只看到一些信息。 (例如,看到名字而不是地址)
目前,我的所有视图都有装饰器 @login_required
,persons_view 有装饰器 @permission_required
。因此,您必须是注册用户才能看到任何内容,这很好但还不够。
我还创建了组(通过管理区域),但无法过滤每个 model/view 的数据。该组要么看到数据,要么看不到数据。
用户注册连接到现有的 ldap 系统(这些组是预先定义的。使用它们会很棒!)
是否可以只为特殊组添加条目并仅查看部分给定信息?
感谢您的帮助!
如果你想限制或指定组的视图,你应该使用两个 mixin:UserPassesTestMixin 和 LoginRequiredMixin。
LoginRequiredMixin
只会确保请求中的用户已登录
UserPassesTestMixin
将检查来自我们定义的布尔表达式的请求,如果它 returns True 它将让用户进入
我们可以使用 test_func
方法进行设置,该方法将 return 为 True 或 False
这是您可以在视图中使用的示例
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
class Index(LoginRequiredMixin, UserPassesTestMixin,View):
def get(self, request):
return render(request, 'nioulboy/index.html')
def test_func(self):
return self.request.user.groups.filter(name='Admin')
在 test_func 方法中,如果 request.user
有一个名为 Admin
的组,我们 return 为真。
如果它 returns True,它将允许用户查看 index page
如果它 returns False,它将发回 403 error
.
对于不基于 class 的视图,使用此功能来授予对整个视图的权限。
# views.py
from django.contrib.auth.decorators import login_required, user_passes_test
def user_check(user):
return user.groups.filter(name="Admin")
@user_passes_test(user_check)
@login_required
def view(request):
....
嘿!
我正在寻找添加不同用户和组条目的可能性。 在我的应用程序中,有不同的用户和不同的组,其中一个用户可以属于多个组。目标是某些组具有敏感数据,因此我只希望该组的成员能够读取条目,但某些数据应该在多个组中可用。 也应该可以只看到一些信息。 (例如,看到名字而不是地址)
目前,我的所有视图都有装饰器 @login_required
,persons_view 有装饰器 @permission_required
。因此,您必须是注册用户才能看到任何内容,这很好但还不够。
我还创建了组(通过管理区域),但无法过滤每个 model/view 的数据。该组要么看到数据,要么看不到数据。
用户注册连接到现有的 ldap 系统(这些组是预先定义的。使用它们会很棒!)
是否可以只为特殊组添加条目并仅查看部分给定信息?
感谢您的帮助!
如果你想限制或指定组的视图,你应该使用两个 mixin:UserPassesTestMixin 和 LoginRequiredMixin。
LoginRequiredMixin
只会确保请求中的用户已登录UserPassesTestMixin
将检查来自我们定义的布尔表达式的请求,如果它 returns True 它将让用户进入
我们可以使用 test_func
方法进行设置,该方法将 return 为 True 或 False
这是您可以在视图中使用的示例
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
class Index(LoginRequiredMixin, UserPassesTestMixin,View):
def get(self, request):
return render(request, 'nioulboy/index.html')
def test_func(self):
return self.request.user.groups.filter(name='Admin')
在 test_func 方法中,如果 request.user
有一个名为 Admin
的组,我们 return 为真。
如果它 returns True,它将允许用户查看 index page
如果它 returns False,它将发回 403 error
.
对于不基于 class 的视图,使用此功能来授予对整个视图的权限。
# views.py
from django.contrib.auth.decorators import login_required, user_passes_test
def user_check(user):
return user.groups.filter(name="Admin")
@user_passes_test(user_check)
@login_required
def view(request):
....