gpt4 book ai didi

Django 通过可在管理员中编辑的用户权限限制 View

转载 作者:行者123 更新时间:2023-12-01 06:55:52 27 4
gpt4 key购买 nike

我有一个 Django 应用程序,我需要将特定的 Views 限制为 Users 的子集。我还想通过 Django Admin 编辑哪些 Users 拥有此权限。因此,在管理员中,我希望能够看到所有用户并有一个复选框,可以选中该复选框以授予查看此特定 Views 的权限。

我相信解决这个问题的方法是在相关的 Views 上使用权限装饰器:

from django.contrib.auth.decorators import permission_required

@login_required
@permission_required('user.can_view_restricted', login_url='/accounts/login/')
def Restrictedview(request, template_name='restricted.html'):
...
# restricted stuff

现在我知道我需要定义此权限(在 permissions.py 中?),并向管理员注册。我不确定如何执行此操作以及如何将权限与特定的 User 实例正确关联。这应该是“用户”上的一个额外字段,还是一个单独的模型来保存模型来挖掘用户和权限?

最佳答案

您可以在文档中阅读有关 Django 权限的详细信息 https://docs.djangoproject.com/en/dev/topics/auth/default/#permissions-and-authorization

基本上 Django 权限使用 Permission 模型,可以在 django.contrib.auth.models 中找到,但对于大多数应用程序,您不需要直接导入或使用该模型。

默认情况下,Django 会为您应用中的任何模型创建 3 个默认权限。如果您在名为 myapp 的应用程序中有一个名为 MyModel 的模型,那么 Django 将创建 create_mymodelchange_mymodeldelete_mymodel 默认权限。

可以通过调用来检查用户是否有一定的权限

user.has_perm('myapp.create_mymodel')

例如,如果您正在检查 create 权限。或者,像您一样,您可以使用装饰器

permission_required('myapp.create_mymodel')

除了 django 提供的默认权限之外,您还可以通过在模型的 Meta 类中指定 permissions 属性来定义模型的自定义权限,如下所示:

class MyModel(models.Model):
[...]
class Meta:
permissions = (
("can_deliver_pizzas", "Can deliver pizzas"),
)

更多关于定义自定义权限的信息:https://docs.djangoproject.com/en/dev/ref/models/options/#permissions

默认情况下,可以使用管理界面轻松地为每个用户编辑权限。只需访问某个用户的页面,就会有一个名为“用户权限”的字段,其中列出了您项目中的所有权限,您可以从中添加或删除特定用户的权限。

关于Django 通过可在管理员中编辑的用户权限限制 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916268/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com