Django Python:向特定用户添加自定义权限

Vin*_*uda 2 python django django-models django-permissions

模型.py

class Meta:
    permissions = (
        ("can_add_data","can add a new data"),
        )
Run Code Online (Sandbox Code Playgroud)

这是我在 Models.py 中创建的自定义权限,我也创建了这些用户。

Django Admin 中的用户,即 http://localhost:8000/admin

如何向特定用户授予权限,以便我可以@permission_required('myapp.can_add_data') 在 views.py 中使用以及在哪里编写代码段?(在哪个文件中)

我是初学者,所以如果有任何错误,请告诉我。

JPG*_*JPG 7

您可以通过 django-shellDjango AdminDjango shell
通过 django-shell
打开您的 django shellpython manage.py shell并运行以下语句来为用户分配权限

In [1] from django.contrib.auth.models import Permission,User
In [2] permission = Permission.objects.get(name='can add a new data')
In [3] user = User.objects.get(id=user_id)
In [4] user.user_permissions.add(permission)
Run Code Online (Sandbox Code Playgroud)


通过 django-admin
打开您的django-admin页面并前往Users部分并选择您想要的user.
在那里你可以看到User permissions如下图所示的部分,

用户权限图片

然后,找到您想要的权限(ref-1)(在您的情况下app_name|model_name|can add a new data)并单击(ref-2ref-3),然后保存

注意:权限分配过程是一次性的,因此您不必每次都更新它除非您需要更改/重新分配权限。

如何
在你的API使用这个权限views.py,定义一个这样的视图,

from django.contrib.auth.decorators import permission_required


@permission_required('app_name.can_add_data')
def my_view(request):
    # do something
    return HttpResponse("response")
Run Code Online (Sandbox Code Playgroud)