Django用户权限

Django用户权限,django,django-views,Django,Django Views,我有一个django应用程序,只有超级用户或工作人员才能在其中创建对象。我是这样做的 模型 class Data(models.Model): content = models.TextField() 观点 这样做之后,我创建了两个用户,第一个是超级用户(admin),第二个是普通用户(test)。之后,我以超级用户(admin)的身份登录到django管理面板,将第二个用户的(test)权限更改为staff,并授予他创建数据对象的权限 但问题是,每当我尝试以(test)第二个用户身份

我有一个django应用程序,只有超级用户或工作人员才能在其中创建对象。我是这样做的

模型

class Data(models.Model):
    content = models.TextField()
观点

这样做之后,我创建了两个用户,第一个是超级用户(
admin
),第二个是普通用户(
test
)。之后,我以超级用户(
admin
)的身份登录到django管理面板,将第二个用户的(
test
)权限更改为staff,并授予他创建
数据
对象的权限

但问题是,每当我尝试以(
test
)第二个用户身份创建
data
对象时,它仍然返回
Http404
错误。为什么会这样


另外:当我将第二个用户(
test
)的权限改为
superuser
,而不是
staff
,一切正常,它能够创建
数据
对象(不再是404错误)。但是我想让它保持
工作人员
&能够创建数据。

我认为问题在于你的
如果
情况,那么,按以下方式更改它

def data_create(request):
    if request.user.is_staff or request.user.is_superuser:
        # Create the Data Object
    else:
        raise Http404

为什么会有这种行为?
In [11]: not False or not True
Out[11]: True

希望上面的陈述描述了它的性质。

request.user.is_staff和
request.user.is_superuser
的输出是什么?当你以
测试用户
的身份登录时,我在管理面板中让
测试
用户成为超级用户帐户的工作人员。但是由于工作人员
test
用户无法创建数据。只需在函数创建之后执行
print()
,就像这样,
def data\u create(request):print(request.user.is\u staff)print(request.user.is\u superuser)return“somethind”
@jerinterGeorge先生,我直接在模板
{{request.user.is_staff}
正在返回
True
&
{{request.user.is_superuser}当我以
test
用户身份登录时,
返回
False
。这让人困惑,代码是否仍然相同?我的意思是只是条件颠倒了,那么为什么它的行为会不同呢?不,不是。
不假或不真
等于
真或假
,这等于
,现在我明白了。谢谢你非常好,先生:)如果用户
不是职员
或者用户
不是超级用户
,那么您的if语句(初始语句)类似于引发404错误。在
测试
用户中,他只是
职员
,也就是说他不是
超级用户
。因此情况出现了问题
In [11]: not False or not True
Out[11]: True