这是我在做Django项目时遇到的一个问题。它是关于表单验证的。
在Django中,当您有一个提交的表单时,可以对相应的表单对象调用is_valid()
,以触发验证并返回一个布尔值。所以,通常在视图函数中有这样的代码:
if form.is_valid():
# code to save the form data
is_valid()
不仅验证表单数据,还将错误消息添加到表单对象中,以便以后向用户显示。
在一个页面上,我同时使用两个表单,并且还希望仅当两个表单都包含有效数据时才保存数据。这意味着在执行代码以保存数据之前,我必须在两个窗体上调用is valid()。最明显的方式是:
if form1.is_valid() and form2.is_valid():
# ...
因为逻辑运算符的短路评估而无法工作。如果form1无效,则不会计算form2,并且它的错误消息将丢失。
这只是一个例子。据我所知,在其他语言(如Smalltalk)中,除了and
/or
之外,没有其他贪婪的选择。我可以想象这个问题是在不同的情况下发生的(不仅仅是在Python中)。我能想到的解决方案都很笨拙(嵌套ifs,将返回值赋给局部变量,并在if语句中使用它们)。我想知道解决这种问题的方法。
提前谢谢!
目前没有回答
相关问题 更多 >
编程相关推荐