Um bom layout exige um bom HTML, um bom CSS e um bom JS, e algumas imagens aqui ou ali. O primeiro passo, do HTML, já foi dado. Onde está o restante?
O web2py guarda arquivos estáticos dentro da pasta static no diretório da aplicação. Portanto, seus arquivos CSS, JS e imagens em geral devem ser armazenados lá. A aplicação Welcome separa esses tipos de arquivos em três pastas: css, js e images.
Dessa forma, é possível chamá-los na sua view como normalmente faz, apenas indicando o caminho para a pasta static:
<html>
<head>
<title>Teste</title>
<link rel="stylesheet" type="text/css" href="{{=URL('static', 'css/style.css')}}" />
<script src="{{=URL('static', 'js/script.js')}}" type="text/javascript"></script>
</head>
<body>
<img src="{{=URL('static', 'images/picture.png')}}" alt="picture" />
</body>
</html>
Mas não se engane, sintaxe Python não pode ser utilizada dentro desses arquivos, apenas dentro das views.