File: node21.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 (129 lines) | stat: -rw-r--r-- 5,045 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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>1.5.3 Writing a form mask</title>
<META NAME="description" CONTENT="1.5.3 Writing a form mask">
<META NAME="keywords" CONTENT="lib">
<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="lib.css" type='text/css'>
<link rel="first" href="lib.html">
<link rel="contents" href="contents.html" title="Contents">

<LINK REL="next" HREF="node22.html">
<LINK REL="previous" HREF="node16.html">
<LINK REL="up" href="module-Form.html">
<LINK REL="next" HREF="node22.html">
<meta name='aesop' content='information'>
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node20.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="module-Form.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A HREF="node22.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy Standard Library Reference</td>
<td><A href="contents.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="node20.html">1.5.2.4 Form</A>
<b class="navlabel">Up:</b> <a class="sectref" href="module-Form.html">1.5 Form  </A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node22.html">1.5.4 Putting it together</A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->

<H2><A NAME="SECTION003530000000000000000">
1.5.3 Writing a form mask</A>
</H2>
The module comes with a default mask for forms, but you'll probably want to change it to use your own design.
All you have to do is write your own form mask.

<P>
A form mask takes a FormField instance as an input and returns some HTML code as output. Don't forget that your
mask should be setting the value of the field according the the <var>currentValue</var> member variable. Moreover,
it should handle the field differently if the <var>errorMessage</var> is set.

<P>
For instance, a mask for a text field could look like this:
<div class="verbatim"><pre>
if field.typ=='text':
    result='%s: &lt;input type=text name="%s" value="%s" size="%s"&gt;'%(
        field.label, field.name, field.currentValue, field.size)
    if field.errorMessage:
        result+=' &lt;font color=red&gt;%s&lt;/font&gt;'%field.errorMessage
return result+'&lt;br&gt;'
</pre></div>

<P>
Things are a bit trickier for select boxes, radio buttons or checkboxes because you have to loop over
the <var>optionList</var> member variable and match each value against <var>currentValue</var>.

<P>
For instance, for a select box, the mask could look like this:
<div class="verbatim"><pre>
if field.typ=='select':
    result='%s: &lt;select name="%s" size="%s"&gt;'%(field.label, field.name, field.size)
    for optionValue in optionList:
        if optionValue==field.currentValue: checked=' checked'
        else: checked=''
        result+='&lt;option%s&gt;%s&lt;/option&gt;'%(checked,optionValue)
    result+='&lt;/select&gt;
    if field.errorMessage:
        result+=' &lt;font color=red&gt;%s&lt;/font&gt;'%field.errorMessage
return result+'&lt;br&gt;'
</pre></div>

<P>

<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node20.html"><img src="../icons/previous.gif"
  border="0" height="32"
  alt="Previous Page" width="32"></A></td>
<td><A href="module-Form.html"><img src="../icons/up.gif"
  border="0" height="32"
  alt="Up One Level" width="32"></A></td>
<td><A HREF="node22.html"><img src="../icons/next.gif"
  border="0" height="32"
  alt="Next Page" width="32"></A></td>
<td align="center" width="100%">CherryPy Standard Library Reference</td>
<td><A href="contents.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="node20.html">1.5.2.4 Form</A>
<b class="navlabel">Up:</b> <a class="sectref" href="module-Form.html">1.5 Form  </A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node22.html">1.5.4 Putting it together</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>