Sometimes I need to define my forms in the view, but still want to use as
much of web2py's form functionality as possible. In those cases I generally
define the form in the controller as well, with corresponding fields, and
then build a form in the view with the same formname.
This works, except that I can't figure out how to make use of formkey to
prevent double posting in this scenario?
*Controller:*
def index():
my_form = FORM(INPUT(_name='name'))
if my_form.accepts(request.vars,formname='my_form'):
logger.debug(my_form.vars.name)
import time
time.sleep(1) # Wait a little to allow a double submission
response.flash = "Form accepted."
elif my_form.errors:
response.flash = str(my_form.errors)
else:
pass
return dict()
*View:*
{{extend 'layout.html'}}
<form method="POST">
<input type="text" name="name">
<input type="submit" value="Double Submit Me">
<input type="hidden" name="_formname" value="my_form">
</form>
--