How do should things work? The first principle is that code should was clear and simple. If you want the output some text, you call Web.output. If you want-get form input, you call web.input. There ' s nothing particularly hard to remember.
The second principle is this web.py should fit your code, not the other--a-around. Every function in web.py are completely independent, you can use whichever ones. You can put your files wherever your like, and web.py'll happily follow along. If you want a piece of code to being run as a web app, you call Web.run, and you don't put your code in the magical where so Web.py can run you.
The third principle is this web.py should, by default, does the right thing by the Web. This means distinguishing between GET and POST properly. It means simple, canonical URLs which synonyms redirect to. It means readable HTML with the proper HTTP headers.
Aaron Swartz rewriting Reddit on the idea of creating web.py