我有一个表单,我请求用户提交一些不同的输入。然后在表单操作方法中,我指定如果任何输入为空,则将它们重定向到表单。这适用于除日期输入之外的所有输入。出于某种原因,它永远不会认为这是空的并且无论如何都会提交表单。我已尝试使用类型日期和类型文本。如果我删除日期输入表单工作正常。我已经尝试更改日期输入的名称(正如预期的那样,它没有修复)。它似乎固定在那个特定的输入上。
在下面的代码中,我已经注释掉db_func行,但是如果注释了它,它会通过if语句传递给else,如果包含日期输入则传递给else。
@cherrypy.expose
@require()
def new_flight(self, msg="Add new flight"):
return """<html><body>
<form method="post" action="/add_flight">
%(msg)s<br />
Departure Airport: <input type="text" name="airport_from"/><br />
Arrival Airport: <input type="text" name="airport_to"/><br />
Date: <input type="text" name="date"/><br />
Carrier: <input type="text" name="carrier"/><br />
Flight No.: <input type="number" name="flight_no"/><br />
<input type="submit" value="Add Flight" />
</html></body>""" % locals()
@cherrypy.expose
@require()
def add_flight(self, airport_from=None, airport_to=None, date=None, carrier=None, flight_no=None):
if airport_from is None or airport_to is None or date is None or carrier is None or flight_no is None:
return self.new_flight("Please enter all information")
else:
#db_func.add_flight(cherrypy.request.login,airport_from,airport_to,date,carrier,flight_no)
return self.home(msg="Your flight has been added.")
我似乎无法弄清楚如何像所有其他输入一样对待日期。
答案 0 :(得分:0)
您应该结束表单标记...
@cherrypy.expose
@require()
def new_flight(self, msg="Add new flight"):
return """<html><body>
<form method="post" action="/add_flight">
%(msg)s<br />
Departure Airport: <input type="text" name="airport_from"/><br />
Arrival Airport: <input type="text" name="airport_to"/><br />
Date: <input type="text" name="date"/><br />
Carrier: <input type="text" name="carrier"/><br />
Flight No.: <input type="number" name="flight_no"/><br />
<input type="submit" value="Add Flight" />
</form></html></body>""" % locals()
希望这有帮助!
答案 1 :(得分:0)
由于某种原因,当在日期框中输入值时,它也会为所有其他框分配一些空白值。该值不等于&#39;&#39;但通过改变if条件,我能够解决问题。而不是变量是None,我把它改为len(变量)&lt; 1.我不完全理解为什么问题正在发生,但是解决了这个问题。我的更新代码如下。
@cherrypy.expose
@require()
def new_flight(self, msg="Add new flight"):
return """<html><body>
<form method="post" action="/add_flight">
%(msg)s<br />
Departure Airport: <input type="text" name="airport_from"/><br />
Arrival Airport: <input type="text" name="airport_to"/><br />
Date: <input type="date" name="date"/><br />
Carrier: <input type="text" name="carrier"/><br />
Flight No.: <input type="number" name="flight_no"/><br />
<input type="submit" value="Add Flight" />
</form></html></body>""" % locals()
@cherrypy.expose
@require()
def add_flight(self, airport_from=None, airport_to=None, date=None, carrier=None, flight_no=None):
if len(airport_from) < 1 or len(airport_to) < 1 or date=='' or len(carrier) < 1 or len(flight_no) < 1:
return self.new_flight("Please enter all information")
else:
db_func.add_flight(cherrypy.request.login,airport_from,airport_to,date,carrier,flight_no)
return self.home(msg="Your flight has been added.")