假设我有一个名为 Blog 的应用程序,其中包含帖子。我希望用户能够添加和更改帖子,但不能删除它们。
Django 文档有这个例子
from myapp.models import BlogPost
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
content_type = ContentType.objects.get_for_model(BlogPost)
permission = Permission.objects.create(codename='can_publish',
name='Can Publish Posts',
content_type=content_type)
我看不出它在这里实际上是如何定义任何东西的,它只是给它一个名称和内容类型。
Django 也有基本的权限检查
假设您有一个带有 app_label foo 和名为 Bar 的模型的应用程序,来测试您应该使用的基本权限:
add: user.has_perm('foo.add_bar')
change: user.has_perm('foo.change_bar')
delete: user.has_perm('foo.delete_bar')
在我的应用程序中,它们将变为:
add: user.has_perm('blog.add_post')
change: user.has_perm('blog.change_post')
delete: user.has_perm('blog.delete_post')
如何为用户创建和添加此类权限(在代码中,而不是管理员)?