2012-05-18 10 views
1

我的驗證器似乎有錯誤。即使在我的表單中輸入-1,我仍然可以返回我的價值,而不是blaat。偶爾有人看到我的錯誤?在web.py中驗證表單,幫助查找錯誤

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

並且順便說一句,如果您有表單,則不需要'web.input()'。使用'self.myForm.d.minutes'後檢查它是否驗證()'。 – 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)), 
)