2012-10-11 39 views
1

我使用python web.py框架設計小型Web應用程序,並試圖驗證密碼字段的概念,Password length must be more than five characters.使用正則表達式在Python web.py表單驗證驗證密碼

按照web.py框架我們可以寫正則表達式驗證密碼字段及以下 是我的代碼

render = web.template.render('templates/') 


urls = (
    '/login', 'Login', 
    '/projects', 'Projects', 
    '/project_details', 'Project_Details', 
) 

app = web.application(urls, globals()) 
vpass = form.regexp('Must be more than 5', lambda x:int(x)>5) 

class Login: 

     login_form = form.Form( 
     form.Textbox('username', form.notnull), 
     form.Password('password',vpass, description="Password"), 
     form.Button('Login'), 
     ) 

    def GET(self): 
     form = self.login_form() 
     return render.login(form) 

    def POST(self): 
     if not self.login_form.validates(): 
      return render.login(self.login_form) 

if __name__ == "__main__": 
    web.internalerror = web.debugerror 
    app.run() 

但是當我點擊登錄按鈕沒有消息在瀏覽器的「password length must......」顯示。

以上是否正則表達式工作?

如何實現密碼驗證在web.py frameowrk

回答

0

您想使用Validator,而不是一個rexexp對象:

vpass = form.Validator('Must be more than 5 characters', lambda x:len(x)>5) 

一個rexexp對象期望一個python正則表達式作爲第一個參數,並將錯誤消息作爲第二個參數。驗證正則表達式的密碼將如下所示:

vpass = form.regexp('.{6,}', 'Must be at least 6 characters') 
+0

非常感謝Martijn,您以前曾多次幫助過我多次,多謝了很多。這裏的驗證工作,如果密碼len小於6,它正在重定向到render.login(self.login_form),因爲我在帖子表單中寫道,但我無法看到web瀏覽器上的messhae。我們如何實現這個目標 –

+0

@Kouripm:啊,這是一個登錄表單;我誤解了,並認爲這是一個密碼*更改*形式。恐怕,我不知道web.py是否足夠好。 –