Django 内容类型表 - 身份验证权限

标签 django django-permissions

我想在 auth_permission 表下添加权限。当我手动插入另一个权限时,我还需要插入一个 content_type_id 。这引用了 content_type 表。我不知道它有什么作用。如果用户没有该权限,我想删除一组 HTML 行。 content_type_id 的重要性是什么?

最佳答案

“content_type_id”是由 Django 确定的字段名称。

该字段是与 ContentType 实例的外键关系。

该字段的重要性在于它指定了权限适用的对象(来自django源代码1.7.11):

Permissions are set globally per type of object, not per specific object instance. It is possible to say "Mary may change news stories ...

在上面的引用中,内容类型字段将是与“新故事”的外键关系。

在您的用例中,您希望能够控制是否有人看到一段 HTML。您可以创建一个自定义模型来定义您的权限,如下所示:

class MyPermObject(models.Model):
    pass

然后像这样创建所述权限:

content_type = ContentType.objects.get_for_model(MyPermObject)
permission = Permission.objects.create(codename='can_see_html', name='Can see my HTML', content_type=content_type)

查看django文档了解如何查询用户的权限:https://docs.djangoproject.com/en/1.9/topics/auth/default/#topic-authorization

关于Django 内容类型表 - 身份验证权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20870603/

相关文章:

python - fabric 没有获取 Django 环境

python - 将函数重写为类

python - 使用mongoengine在Django中创建用户时添加其他字段

API 级别的 Django 组和权限(使用 django-rest-framework)

django - 如何修改 django 以创建 "view"权限?

django - 在 Django 中添加新的自定义权限

python - 如何为用户设置权限

python - 客户端不支持服务器请求的认证协议(protocol)考虑升级mysql客户端

python - 不同客户端的 Django 权限

django - 如何构造 Django 权限以具有多个类别的权限组?