I think Massimo already give clear answer in his post.
And I try to give my $0.02 on this from another aspect. Let's say you
create form in your view rather than controller, don't you still need
to somehow describe this form in the controller again, in order to
make your controller capable to "understand" the form data sent from
browser? If so, how would you describe its data structure, in your
controller? There are 2 conventions in web2py to do that, one is the
example #28 Ryan mentioned, the other is SQLFORM.factory(Field(...),
Field(...)) Massimo mentioned. It just happened that the "description"
in controller, has a default appearance even without a view, which
could make MVC-believer confused. Hope my explanation make some sense.
By the way, I remember there was a deep discussion on this MVC topic
in this mail list, but I just did not dig it out, yet.
Regards,
Iceberg