Have you looked here? http://web2py.com/examples/default/examples#form_examples
FORM (and all the other UPPERCASE helpers) is just a function that creates an html fragment. The key to understanding how these forms work is to realize that forms are "submitted to themselves". That's why the code in the examples first checks: "if form.accepts" -> this can only be true if the form was already submitted, so you can take some actions based on the values in the form "else if form.errors" -> this can only be true if the form was submitted, but validation failed, so you can take actions based on the failures "else" -> this can only be true if the form was not submitted yet, so you can display the form for the first time Please checkout example 28 from the above link - it should be quite enlightening.