繁体   English   中英

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

[英]How To Restrict Pages or Models based on User/Group Permissions with CBVs?

借助Sk1p解决方案:

从django.contrib.auth.decorators导入Permission_required

ip_manager / urls.py:

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

我试图限制用户添加,更改或删除模型。 我只使用CBV。 我看了以下示例。

装饰课

如何在基于Django类的视图上使用Permission_required装饰器

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

ip_manager / urls.py:

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

谢谢,瑞安

如果要指定所需的权限,则需要使用permission_required装饰器 因为它需要一个参数,所以类似以下的内容应该起作用:

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

文档中也对此进行了说明: 装饰基于类的视图

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM