无法在Djang中设置自定义权限

2024-04-29 12:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为Django应用程序设置一些自定义权限,但似乎无法使其正常工作。官方文件有点少,而且没有提到(至少我能找到)如何设置权限?根据我发现的一些第三方教程,我扩展了User类,它似乎可以正常工作:

from django.db import models
from django.contrib.auth.models import User,UserManager

    class CustomUser(User):
        custom_field = models.CharField(max_length=250)
        objects = UserManager()

        class Meta:
            permissions = (
                ('is_custom','Has a Custom Permission'),
            )

但是,当我尝试设置权限时,它不起作用:

^{pr2}$

你知道我做错了什么吗?我将django1.2.1与python2.4.3一起使用。感谢所有的投入。。。在


Tags: 文件djangofromimport应用程序权限db官方
2条回答

我测试了您的代码(Python2.6.2、Django 1.2.1),一切正常。你能写一个单元测试来练习相同的代码片段吗?在

附加说明是,user.has_perm(custom_permission)不会返回True。尝试user.has_perm('app.is_custom')。在

更新

代码片段如下:

In [1]: from app.models import CustomUser

In [2]: from django.contrib.auth.models import User, Permission

In [3]: user = CustomUser.objects.get(username = 'new.user')

In [4]: custom_permission = Permission.objects.get(codename='is_custom')

In [5]: user.user_permissions.add(custom_permission)

In [6]: user.save()

In [7]: user.has_perm(custom_permission)
Out[7]: False

In [8]: user.has_perm('app.is_custom')
Out[8]: True

In [9]: user.get_all_permissions()
Out[9]: set([u'app.is_custom'])

我在另一个平台上做了更多的测试,并且能够复制您的结果。经过更深入的研究,我发现这是认证后端的问题,而不是权限本身的问题。在

谢谢你的帮助。在

相关问题 更多 >