2014-09-05 1 views
0

У меня есть форма, где я прошу пользователя представить несколько разных входов. Затем в методе действия формы я указываю, что если какой-либо из входов пуст, перенаправляйте их в форму. Это работает для каждого входа, кроме ввода даты. По какой-то причине он никогда не признает это пустым и все равно подает форму. Я пробовал это, используя тип даты и тип текста. Если я удалю ввод даты, форма работает нормально. Я попытался изменить имя ввода даты (которое, как и ожидалось, не исправляет его). На этом конкретном входе просто кажется, что это исправлено.Представление формы CherryPy не распознает ввод даты как пустой

В приведенном ниже коде я прокомментировал строку db_func, но с ней прокомментировал или нет, она проходит через оператор if и переходит к 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

Если вы печатаете содержимое даты в функции add_flight, что вы получаете? – Aphid

+0

Итак, я изменил тип ввода на дату, и, если я распечатаю содержимое, я вижу, что он равен «когда ничего не введено». Я изменил «date is None» на «date ==». Теперь он возвращает «Пожалуйста, введите всю информацию», если дата пуста, однако, если я введу дату и оставлю другие поля пустыми, она добавит рейс. Я не уверен, почему дата, содержащая значение, кажется, превзошла остальные поля. –

ответ

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() 

Надеется, что это помогает!

+0

Спасибо за указание, что я закрыл форму, но у меня все еще такая же проблема –

0

По какой-то причине, когда значение вводится в поле даты, оно присваивает пустое значение всем остальным полям. Это значение не равно '', но, изменив условия if, я смог исправить проблему. Вместо переменной None, я изменил ее на len (переменная) < 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.")