2012-05-10 204 views
1

我想要寫HTML表單形式valitation反饋,就像我怎樣才能做到在web.py

form  
    input type..... 
    input type.....  

然後在PY這樣寫:

f = forms.register_form() 
if not f.validates(): 
    return render.register(f) 

的問題是,如果表單未通過驗證,我如何才能將信息反饋給用戶。 有沒有像#springbind的速度?

+0

請修復您問題的格式。不要爲它使用HTML,而是通過用4個空格縮進來將代碼標記爲代碼。 – ThiefMaster

回答

0

讓我與我的一個web.py項目片斷回答:

bookeditform = form.Form(
    form.Textbox('title', form.notnull), 
    form.Textbox('author', form.notnull), 
    form.Textbox('year', 
     form.Validator('Must be a number', lambda x: not x or int(x) > 0)), 
) 

# ... 

class NewBookHandler: 
    def GET(self): 
     f = bookeditform() 
     return render.bookedit(f, "New book") 

    def POST(self): 
     f = bookeditform() 
     if f.validates(): 
      newid = db.insert('book', title=f.d.title, 
           author=f.d.author, year=f.d.year) 
      raise web.seeother('/book/%s' % newid) 
     else: 
      return render.bookedit(f, "New book") 

回顧一下:

  • 在處理程序上GET,只需使空形式。
  • POST上,加載表單,並檢查它是否有效。
    • 如果有,請執行所需的操作,然後將用戶重定向到成功頁面。不要在POST上渲染任何內容,因爲用戶可以刷新頁面,重新執行相同的操作。
    • 如果沒有,重新渲染表單(它將包含輸入的數據,並顯示錯誤消息)。
+0

它不會向我顯示任何錯誤消息。該怎麼辦 ?請幫助 – sumanth232

+0

@ krishna222,我有'form.notnull'作爲一些表單字段的驗證器,'$:form.render()'實際上在標有'notnull'的字段上顯示爲「必需」。 – Helgi