型号:
INTERNAL_STATES = (
('1', _('Live')),
('2', _('Coming soon')),
('3', _('Draft')),
)
查看:
if request.user.is_staff is False and building.internal_state is not 1:
raise Http404
else:
pass
有人可以告诉我为什么这个代码登陆我404即使我正在尝试查看的建筑物在我没有登录时还有internal_state = 1?很抱歉发布这么简单的问题,但我看不出它有什么问题。
答案 0 :(得分:3)
internal_state的类型是字符串,而不是整数。
试试这个:
if not request.user.is_staff and building.internal_state != '1':
raise Http404
else:
pass
答案 1 :(得分:0)
与'is'运算符相比,即使使用整数,运算符也很危险。在CPython实现中,您可以检查是否键入:
a = 1
b = 1
a is b
#True
但是如果你输入这样的内容:
a = -6
b = -6
a is b
#False
事实上,'is'运算符不是比较值而是比较内存中的地址。
这是我的50美分。