在Django应用程序中,我在表单中有一些检查会返回error =“something” 问题是除非有任何错误,否则不会定义该错误。
mycharacters = Character.objects.filter(username_id=request.user.id)
if(mycharacters.count() >= 5):
error = True
if not error:
#save to DB
问题是如果没有错误,则不存在错误变量。
我还想过一种可能性,以避免这种错误,即:
error = None
#checks here
if error == None:
#save to DB
但我不确定这是否是最佳方法。
有没有办法在Python中做if error var does not exist:
?
答案 0 :(得分:3)
您可以执行以下操作:
error = mycharacters.count() >= 5
if not error:
...
<强>更新强>
error = mycharacters.count() >= 5
if error:
to_json = {"incorrect":"Excedeed maximum"}
else:
# Save to DB
答案 1 :(得分:1)
使用else
分支:
if mycharacters.count() >= 5:
error = True
else:
error = False
或将变量初始化为最不可能的值,然后重新分配:
error = False
if mycharacters.count() >= 5:
error = True
后者通常更容易阅读,但这两种方法都有效(在其他答案中看到的单表达式变体也是如此,即使你需要做更多的事情也难以扩展)。
(请注意,如果您需要做的不仅仅是一个简单的赋值来建立“false”值,if/else
构造通常会获胜,但在这种情况下,分配两次的成本是微不足道的。)
检查变量是否存在可以完成,但是编程样式很冗长。丢失的变量应该被认为是编程错误,而不是隐藏的程序状态。
答案 2 :(得分:0)
这是因为当你的第一个条件(第一个if)失败时,那个块将不会执行因此不会有任何名为error
的变量,之后你的第二个条件和python解释器没有'获取名称为error
的任何变量,这就是为什么它在赋值之前给出了error
的参考。
mycharacters = Character.objects.filter(username_id=request.user.id)
if(mycharacters.count() >= 5):
error = True
if not error:
#save to DB
因此,在if(mycharacters.count() >= 5)
之前,您可以设置默认值为error
的变量False
,并仅在条件成立时将其设置为True
。