我了解基本的用户资料。我知道身份验证,登录,创建帐户等。但是现在我想处理组和权限。
Django组/权限的文档在哪里?不是吗:http
:
//docs.djangoproject.com/en/dev/topics/auth/
我想您需要问的第一个问题是您需要什么权限以及什么样的权限。我说的是哪种类型,您想要模型级别还是对象级别。为了澄清差异,假设您有一辆Car模型车。如果要授予所有汽车的权限,则“模型”级别是合适的,但是如果要按汽车授予权限,则需要“对象”级别。您可能同时需要这两个,这不是问题,我们将看到。
对于模型权限,Django主要为您处理这些权限。Django将为每个模型以“
appname.permissionname_modelname”形式创建权限。如果您有一个带有Car模型的名为“
drivers”的应用程序,则一个权限为“
drivers.delete_car”。Django自动创建的权限将被创建,更改和删除。由于某些奇怪的原因,他们决定不包括来自CRUD的读取权限,您必须自己执行此操作。请注意,由于某种原因,Django决定将CRUD的“更新”更改为“更改”。要向模型添加更多权限,例如读取权限,请使用Meta类:
class Car( models.Model ):
# model stuff here
class Meta:
permissions = (
( "read_car", "Can read Car" ),
)
请注意,权限是一组元组,其中元组项是如上所述的权限以及对该权限的描述。您不必遵循permname_modelname约定,但是我通常会坚持使用。
最后,要检查权限,可以使用has_perm:
obj.has_perm( 'drivers.read_car' )
其中obj是User或Group实例。我认为为此编写一个函数更简单:
def has_model_permissions( entity, model, perms, app ):
for p in perms:
if not entity.has_perm( "%s.%s_%s" % ( app, p, model.__name__ ) ):
return False
return True
其中实体是要检查(组或用户)权限的对象,模型是模型的实例,权限是作为字符串检查的权限列表(例如[‘read’,’change’]),而app是应用程序名称作为字符串。要执行与上面的has_perm相同的检查,您可以调用以下命令:
result = has_model_permissions( myuser, mycar, ['read'], 'drivers' )
如果您需要使用对象或行权限(它们含义相同),那么Django本身并不能真正为您提供帮助。令人高兴的是,您可以同时使用模型和对象权限。如果您想要对象权限,则必须自己编写(如果使用1.2+)或找到其他人编写的项目,我喜欢的一个是华盛顿时间的django-
objectpermissions。
问题内容: 我需要实现用户组的用户权限(与Facebook组非常相似)。例如,每个组可以具有具有以下权限的成员:can_post,can_delete,can_ban等。当然,一个用户可以是多个组的成员,并且组可以具有许多具有不同权限的不同用户。我需要什么型号的功能? 问题答案: Django有一个内置的网上论坛系统。每当你有这样的问题时,我建议你搜索Django文档,该文档广泛,有用并且编写得很
问题内容: 我正在使用kops在AWS上运行Kubernetes集群。我已经将EBS卷安装到了容器上,并且可以从我的应用程序中看到它,但是由于我的应用程序没有以root用户身份运行,因此它是只读的。我如何以root以外的用户身份挂载a ?在似乎不具有任何选项来控制的用户,组或文件权限安装路径。 这是我的部署yaml文件: 问题答案: Pod安全上下文支持设置,允许您设置拥有该卷的组ID,从而确定谁
问题内容: 我正在尝试获得适用于Django(1.2)的流响应的“ hello world”。我弄清楚了如何使用生成器和函数。但是响应仍然没有流式传输。我怀疑其中有一个中间件-也许是ETAG计算器?但是我不确定如何禁用它。有人可以帮忙吗? 到目前为止,这是我迄今为止所拥有的流媒体“世界”: 问题答案: 你可以使用条件装饰器禁用ETAG中间件。这将使你的响应通过HTTP流回。你可以使用命令行工具(如
问题内容: 关于此功能的文档有点缺乏。 我可以看到我需要创建一个带有其他小部件列表的“ widgets”属性,但此后会得到一些Sherlock Holmes。 有人可以向我解释如何使用MultiWidget小部件吗? 问题答案: 有趣的问题,我认为也许在文档中值得更多关注。 这是我刚问过的一个问题的例子: 我做了什么 子类化 实现了一个在元组中创建多个小部件的构造函数。这很重要,因为超类使用此元组
问题内容: 我已经检查了很多有关django AJAX表单的教程,但是每个教程都告诉您一种实现方法,它们都不是简单的,而且由于我从未使用过AJAX,所以我有点困惑。 我有一个名为“ note”的模型,它的模型形式,并且在模板内,我需要每次note元素发送stop()信号(来自jQuery Sortables)时django更新对象。 我当前的代码: views.py JavaScript: 当前代
我有表: 用户、角色 数据透视表: 角色\u用户 模型: 用户、角色和权限。 现在我想实现的是,假设admin在控制面板中添加了新权限。那么,糟糕的是,作为一名开发人员,我必须站起来,打开代码,手动将这个新添加的权限放在一些路由的中间软件中。每次管理员授予新权限时,我都必须手动添加代码。 是否有任何方法可以动态执行所有这些操作,以便在管理员添加新权限后,我不会更改任何内容,也不会添加代码,并且新权
问题内容: 我想通过ORM进行一个非常简单的查询,但无法弄清楚。 我有三种模式: 位置(位置),属性(位置可能具有的属性)和评分(也包含得分字段的M2M“直通”模型) 我想选择一些重要的属性,并能够通过这些属性对我的位置进行排名-即,所有选定属性的总分更高=更好。 我可以使用以下SQL来获取所需的内容: 哪个返回 | 我可以通过ORM得到的最接近的是: 哪个返回 即所有的总和,而不是按位置分组。
问题内容: 我听说过redis-cache,但是它是如何工作的呢?通过以某种方式缓存rdbms查询,它是否被用作Django和我的rdbms之间的一层? 还是应该直接将其用作数据库?我对此表示怀疑,因为该github页面不包含任何登录详细信息,所以没有设置..只是告诉您设置一些config属性。 问题答案: 这个Redis的Python模块在自述文件中有一个清晰的用法示例:http : //git