阅读文档让我了解到 Django 中的默认权限系统与模型相关联,这是可以理解的,因为它是为管理界面创建的。
这对视图意味着什么?如果我仅将权限用于视图,那么与权限相关联的模型会不会被使用?
这是为了使这个问题更加具体。我的目标是将视图限制为一组特定的用户。
创建一个内容类型:
content_type = ContentType.objects.get(app_label='myapp', model='SomeModel')
创建权限:
permission = Permission.objects.create(codename='can_view_this', name='Can Access this View', content_type=content_type)
创建组:
group = Group.objects.get_or_create(name='some_group')
向组添加权限:
group.permissions.add(permission)
将用户添加到组:
group.user_set.add(User.objects.get(id=1))
测试权限:
@user_passes_test(lambda u: u.has_perm('myapp.can_view_this'))
def some_view(request):
所以回到第 1 步,请注意我必须如何分配模型才能创建 ContentType,并且我必须创建 ContentType,因为创建 Permission 条目需要 ContentType。
所以问题是,再一次,SomeModel
在这种情况下是否正在使用它?我什至不确定要分配视图特定权限的确切模型是什么,没有任何意义。
希望这个问题是有道理的。