This is a concept that you have to get a firm grasp of.
There is a file "layout.html" that contains all of the base HTML that you
might want on every page in your site. It has a templating instruction
{{include}} which is where each of your individual view files will get
inserted.
If you recall the default "index.html" file, you should have seen at the top
"{{extend 'layout.html'}}". This is what tells web2py to take your
index.html file and insert it into the layout.html file.
What you also should have seen is in controllers/default.py:
def index():
"""
example action using the internationalization operator T and flash
rendered by views/default/index.html or views/generic.html
"""
return dict(message=T('Hello World'))
When you visit "/welcome/default/index" in your browser, it looks for the
app "welcome, then "default.py" in your controllers file and then "def
index()" in default.py. You will see that index() returns a variable
"message='Hello World'". "message" is sent to the view file
views/default/index.html and is available like this: {{=message}}. The
default index.html file includes some other content but you should be able
to find {{=message}} in there somewhere. Try editing "message" to 'Good bye
world'. Or try moving {{=message}} to a different position in index.html and
see what happens.