2012-05-18 1 views
1

У меня, кажется, ошибка в моем валидаторе. Даже когда я ввожу -1 в свою форму, я по-прежнему получаю свое значение вместо blaat. Возможно, кто-то видит мою ошибку?Валидатор формы в web.py, help find the error

class test: 
    def __init__(self): 
     self.render = web.template.render('templates/') 
     self.myForm = web.form.Form(
      web.form.Textbox('minutes', id='minutes'), 
      validators = [form.Validator("Minutes not correct", 
             lambda i: i.minutes > 0)] 
     )    

    def GET(self): 
     return self.render.addLog(self.myForm) 

    def POST(self): 
     webinput = web.input() 
     if self.myForm.validates(): 
      return webinput.date1+webinput.minutes 
     else: 
      return "blaat" 
+0

И BTW вам не нужно 'web.input()', если у вас есть форма. Просто используйте 'self.myForm.d.minutes' после проверки того, что он' validates() '. – Helgi

ответ

2

i.minutes не будут преобразованы в int автоматически, а строки сравнения больше, чем целые числа:

>>> '-1' > 0 
True 

Использование int(i.munites)

Кстати, форма шириной валидаторы используются для сравнения формы поля между собой, например чтобы проверить, что введенные пароли совпадают. Чтобы проверить, верно ли данное поле, используйте одноразовые валидаторы:

self.myForm = web.form.Form(
    web.form.Textbox('minutes', 
     web.form.Validator("Minutes not correct", lambda x: int(x) > 0)), 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^