File: node20.html

package info (click to toggle)
cherrypy 0.10-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 10,324 kB
  • ctags: 1,759
  • sloc: python: 14,411; sh: 6,915; perl: 2,472; makefile: 76
file content (145 lines) | stat: -rw-r--r-- 4,944 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>19. How to use Cheetah templates with CherryPy</title>
<META NAME="description" CONTENT="19. How to use Cheetah templates with CherryPy">
<META NAME="keywords" CONTENT="howto">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="STYLESHEET" href="howto.css" type='text/css'>
<link rel="first" href="howto.html">
<link rel="contents" href="contents.html" title="Contents">

<LINK REL="next" HREF="node21.html">
<LINK REL="previous" HREF="node19.html">
<LINK REL="up" HREF="howto.html">
<LINK REL="next" HREF="node21.html">
<meta name='aesop' content='information'>
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node19.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A HREF="howto.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A HREF="node21.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy HowTo</td>
<td><A HREF="node1.html"><img src="../icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><img src="../icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
<td><img src="../icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" HREF="node19.html">18. How to use</A>
<b class="navlabel">Up:</b> <a class="sectref" HREF="howto.html">CherryPy HowTo</A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node21.html">20. How to use</A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION0020000000000000000000">
19. How to use Cheetah templates with CherryPy</A>
</H1>

<P>
Cheetah is a templating language for python. CherryPy comes with its own templating language (CGTL and CHTL), but if you prefer to use Cheetah, that's very easy to do. More about Cheetah can be found at:
<a class="url" href="http://www.cheetahtemplate.org/">http://www.cheetahtemplate.org/</a>.

<P>
Here is a sample code that shows how to do it:
<div class="verbatim"><pre>
#################
# File Root.cpy
#################
from Cheetah.Template import Template
CherryClass Root:
view:
    def index(self):
        template = Template(file='index.tmpl')
        template.colors = ['AA', 'BB', 'CC']
        return template.respond()
    
#################
# File index.tmpl
#################
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Cheetah Experiment&lt;/title&gt;
&lt;/head&gt;
#attr $colors = []
#if $colors is []
    #set codelist = ['00','33','66','99','CC','FF']
#else 
    #set codelist = $colors
#end if
&lt;body&gt;
&lt;table border=1&gt;
#for $r in $codelist
    #for $g in $codelist
        &lt;tr&gt;
        #for $b in codelist
        #set color = '#%s%s%s'%(r,g,b)
        &lt;td bgColor = $color&gt;&amp;nbsp;&amp;nbsp; $color &amp;nbsp; &lt;/td&gt;
        #end for
    #end for
#end for
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre></div>

<P>
Note that this example is not optimized because the template file will be read/parsed/rendered each time the page is displayed. It is quite easy to change that code so it only does it once, or everytime the template file is changed.

<P>
Many thanks to "ToddB" for contributing this code :-)

<P>

<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node19.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A HREF="howto.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A HREF="node21.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy HowTo</td>
<td><A HREF="node1.html"><img src="../icons/contents.gif"
  border="0" height="32"
  alt="Contents" width="32"></A></td>
<td><img src="../icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
<td><img src="../icons/blank.gif"
  border="0" height="32"
  alt="" width="32"></td>
</tr></table>
<b class="navlabel">Previous:</b> <a class="sectref" HREF="node19.html">18. How to use</A>
<b class="navlabel">Up:</b> <a class="sectref" HREF="howto.html">CherryPy HowTo</A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node21.html">20. How to use</A>
<hr>
<span class="release-info">Release 0.10, documentation updated on 19 March 2004.</span>
</DIV>
<!--End of Navigation Panel-->
<ADDRESS>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</ADDRESS>
</BODY>
</HTML>