如何使用CBV根据用户/组权限限制页面或模型?

2024-07-02 10:49:47 发布

您现在位置:Python中文网/ 问答频道 /正文

得益于Sk1p的解决方案:

从django.contrib.auth公司.decorators需要进口许可证

ip经理/网址.py:

urlpatterns = patterns('',
    url(r'^(?P<groupname>\w+)/tag/add/$', permission_required('ip_manager.add_tag')(TagFormView.as_view()), name='tag-add'),
)

我试图限制用户添加、更改或删除模型。我只使用CBV。我看了下面的例子。。在

Decorating the class

以及

How to use permission_required decorators on django class-based views

我的问题是我想告诉用户需要访问哪个权限,但我不确定如何指定它。我尝试在loginrequired中将权限作为参数传递,并在一个没有设置权限的用户上进行了测试。这个方法不起作用它仍然允许我添加一个新的模型对象。有人有什么建议吗?在

ip经理/网址.py:

^{pr2}$

谢谢, 瑞安


Tags: django用户py模型ipdecoratorsadd权限
2条回答

如果要指定所需的权限,则需要使用the ^{} decorator。因为它需要一个论据,所以下面这样的方法应该有效:

permission_required("your_permission")(TagFormView.as_view())

文档中也说明了这一点:Decorating class-based views

另一种限制基于类的视图(而不是URL路由)的权限的方法是在管理面板中使用Groups,在视图本身上使用PermissionRequiredMixin。就这样应用PermissionRequiredMixin。。。在

class MemoCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
    permission_required = 'memos.can_change_memo'
    model = Memo

。。。然后将用户添加到管理面板中的特定Groups,并对其应用can_change_memo权限。。或者更好的方法是,在注册时将组应用于用户!在

相关问题 更多 >