Home arrow Python arrow Page 2 - Templating with Cheetah

Basic Templating - Python

Templating makes it easier to handle dynamic content on web pages. One of the better templating frameworks for Python is Cheetah. Keep reading to find out more.

TABLE OF CONTENTS:
  1. Templating with Cheetah
  2. Basic Templating
  3. Compiling Templates
  4. More Logic
By: Peyton McCullough
Rating: starstarstarstarstar / 21
December 27, 2005

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

Let's start off with a basic template with which to test out Cheetah. A simple counter will work fine. Create a file named counter.tmpl:

Hello, This page has been viewed $counter times.

In the above example, we will obviously want to substitute the $counter variable for the number of times the particular page has been viewed. It's pretty easy to turn our template into a real, working page in just a few lines of Python. We'll use a text file to store the count for simplicity's sake:

import os.path
from Cheetah.Template import Template

# Update the count
if os.path.exists ( 'count.txt' ):
   count = int ( file ( 'count.txt' ).read() )
   count = count + 1
else:
   count = 1
file ( 'count.txt', 'r' ).write ( str ( count ) )

print Template ( file = 'counter.tmpl', searchList =
[{ 'counter': str ( count ) }] )

After updating the count, we simply pass the file we wish to parse and a dictionary containing the replacement value. Cheetah then does the rest and returns the result, which is printed.

It's also possible to pass objects to Cheetah. Take a look at this template, contact.tmpl, which display's a particular person's contact information:

<b>Name:</b> $profile.name<br />
<b>E-Mail:</b> $profile.email<br />
<b>Phone:</b> $profile.phone<br />
<b>MSN:</b> $profile.msn<br />
<b>AIM:</b> $profile.aim<br />
<b>ICQ:</b> $profile.icq<br />
<b>YIM:</b> $profile.yim

All we need to do is create an object with the above properties and pass it under the profile key:

from Cheetah.Template import Template

class Profile:
   def __init__ ( self, name, email, phone, msn, aim, icq, yim ):
      self.name = name
      self.email = email
      self.phone = phone
      self.msn = msn
      self.aim = aim
      self.icq = icq
      self.yim = yim

johnDoe = Profile ( 'John Doe', 'jdoe@google.com', '(555) 555-
5555', 'jdoe@google.com', 'JDoe', '0123456789', 'JDoe' )
print Template ( file = 'contact.tmpl', searchList =
[{ 'profile': johnDoe }] )

Cheetah then substitutes the appropriate attributes.



 
 
>>> More Python Articles          >>> More By Peyton McCullough
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PYTHON ARTICLES

- Python Big Data Company Gets DARPA Funding
- Python 32 Now Available
- Final Alpha for Python 3.2 is Released
- Python 3.1: String Formatting
- Python 3.1: Strings and Quotes
- Python 3.1: Programming Basics and Strings
- Tuples and Other Python Object Types
- The Dictionary Python Object Type
- String and List Python Object Types
- Introducing Python Object Types
- Mobile Programming using PyS60: Advanced UI ...
- Nested Functions in Python
- Python Parameters, Functions and Arguments
- Python Statements and Functions
- Statements and Iterators in Python

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: