Hello, I think there is multiple paragraph in this paragraph :
keepvalues keepvalues The optional argument keepvalues tells web2py what to do when a form is accepted and there is no redirection, so the same form is displayed again. By default the form is cleared. If keepvalues is set to True, the form is pre-populated with the previously inserted values. This is useful when you have a form that is supposed to be used repeatedly to insert multiple similar records. If the dbio argument is set to False, web2py will not perform any DB insert/update after accepting form. If hideerror is set to True and the form contains errors, these will not be displayed when the form is rendered (it will be up to you to display them fromform.errors somehow. The onvalidation argument is explained below. I think it should be something like that : keepvalues keepvalues The optional argument keepvalues tells web2py what to do when a form is accepted and there is no redirection, so the same form is displayed again. By default the form is cleared. If keepvalues is set to True, the form is pre-populated with the previously inserted values. This is useful when you have a form that is supposed to be used repeatedly to insert multiple similar records. dbio If the dbio argument is set to False, web2py will not perform any DB insert/update after accepting form. hideerror If hideerror is set to True and the form contains errors, these will not be displayed when the form is rendered (it will be up to you to display them fromform.errors somehow. The onvalidation argument is explained below.

