I think there is some confusion here about how it all comes together. I'd suggest following closely the overview chapter in the web2py book and make sure to get a good grasp for how all the files work together when a URL is requested.
Basically, http://127.0.0.1:8000/myapp/default/index will look for "def index()" in "controllers/default.py" in the app "myapp". Your def index() could look like this: def index(): return dict(message='hello world') And then in "views/default/index.html": The message is {{=message}}.

