解决方案感谢Sk1p:
来自django.contrib.auth.decorators import 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。我查看了以下示例..
和
How to use permission_required decorators on django class-based views
我的问题是我想知道用户需要访问哪个权限,但我不确定如何指定它。我尝试在login-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'),
)
谢谢, 莱恩
答案 0 :(得分:1)
如果要指定所需的权限,则需要使用the permission_required
decorator。因为需要参数,所以类似下面的内容应该有效:
permission_required("your_permission")(TagFormView.as_view())
文档中也说明了这一点:Decorating class-based views
答案 1 :(得分:0)
另一种限制基于类的视图(而不是URL路由)权限的方法是在管理面板中使用Groups
,在视图本身上使用PermissionRequiredMixin
。只需像这样应用PermissionRequiredMixin
...
class MemoCreateView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
permission_required = 'memos.can_change_memo'
model = Memo
...,然后将用户添加到管理面板中的特定Groups
并对该can_change_memo
应用Group
权限。或者更好的是,将组应用于登录的用户-