3.3.1 Eliminating the Application

Let's revisit our first Albatross application with the simple.py sample program in the samples/templates/simple5 directory.

#!/usr/bin/python
from albatross import SimpleContext

ctx = SimpleContext('.')
templ = ctx.load_template('simple.html')
templ.to_html(ctx)

print 'Content-Type: text/html'
print
ctx.flush_content()

Now consider the template file simple.html.

<html>
 <head>
  <title>The CGI environment</title>
 </head>
 <body>
  <table>
   <al-exec expr="
import os
keys = os.environ.keys()
keys.sort()
">
   <al-for iter="name" expr="keys">
    <tr>
     <td><al-value expr="name.value()"></td>
     <td><al-value expr="os.environ[name.value()]"></td>
    <tr>
   </al-for>
  </table>
 </body>
</html>

You can see the program output by pointing your browser at http://www.object-craft.com.au/cgi-bin/alsamp/simple5/simple.py.

You will notice that we have completely removed any application logic from the Python program. This is a cute trick for small example programs, but it is definitely a bad idea for any real application.