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 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>14. How to make hidden masks or views</title>
<META NAME="description" CONTENT="14. How to make hidden masks or views">
<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="node16.html">
<LINK REL="previous" HREF="node14.html">
<LINK REL="up" HREF="howto.html">
<LINK REL="next" HREF="node16.html">
<meta name='aesop' content='information'>
</head>
<body>
<DIV CLASS="navigation">
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node14.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="node16.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="node14.html">13. How to create</A>
<b class="navlabel">Up:</b> <a class="sectref" HREF="howto.html">CherryPy HowTo</A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node16.html">15. How to control</A>
<br><hr>
</DIV>
<!--End of Navigation Panel-->
<!--Table of Child-Links-->
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
<UL CLASS="ChildLinks">
<LI><A href="node15.html#SECTION0015100000000000000000">14.1 Introduction</a>
<LI><A href="node15.html#SECTION0015200000000000000000">14.2 How it works</a>
</ul>
<!--End of Table of Child-Links-->
<HR>
<H1><A NAME="SECTION0015000000000000000000">
14. How to make hidden masks or views</A>
</H1>
<H1><A NAME="SECTION0015100000000000000000">
14.1 Introduction</A>
</H1>
Masks and views usually correspond to URLs. For instance, if one writes the following code:
<div class="verbatim"><pre>
CherryClass CommonMasks:
mask:
def redLabel(self, label):
<b><font color=red py-eval="label"></font></b>
CherryClass Root:
mask:
def index(self):
<html><body>
Hello, <py-eval="commonMasks.redLabel('world')">
</body></html>
</pre></div>
The URL <a class="url" href="http://localhost:8000">http://localhost:8000</a> will correspond to <var>root.index</var>.
<P>
That's fine, but this also means that if someone artificially types the URL
<a class="url" href="http://localhost:8000/commonMasks/redLabel?label=IHateCherryPy">http://localhost:8000/commonMasks/redLabel?label=IHateCherryPy</a>, they will get the result of the <var>redLabel</var> mask.
<P>
In this case, it's not a very big deal because the <var>redLabel</var> mask doesn't do anything important, but in some cases
this might be a problem. That's why <b>hidden</b> masks and views were included in CherryPy-0.8.
<P>
<H1><A NAME="SECTION0015200000000000000000">
14.2 How it works</A>
</H1>
All you have to do is add the keyword <b>hidden</b> after the definition of the mask or view, and before the colon.
In our example, one could write:
<div class="verbatim"><pre>
CherryClass CommonMasks:
mask:
def redLabel(self, label) hidden:
<b><font color=red py-eval="label"></font></b>
CherryClass Root:
mask:
def index(self):
<html><body>
Hello, <py-eval="commonMasks.redLabel('world')">
</body></html>
</pre></div>
<P>
All this means is that the <var>redLabel</var> mask can no longer be accessed directly from the browser. But it can be called
from another mask or view.
<P>
It is also possible to declare that an entire CherryClass is hidden, like this:
<div class="verbatim"><pre>
CherryClass CommonMasks hidden:
mask:
def redLabel(self, label):
<b><font color=red py-eval="label"></font></b>
CherryClass Root:
mask:
def index(self):
<html><body>
Hello, <py-eval="commonMasks.redLabel('world')">
</body></html>
</pre></div>
In this case, all masks and views of <var>CommonMasks</var> will be hidden.
<P>
<DIV CLASS="navigation">
<p><hr>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td><A HREF="node14.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="node16.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="node14.html">13. How to create</A>
<b class="navlabel">Up:</b> <a class="sectref" HREF="howto.html">CherryPy HowTo</A>
<b class="navlabel">Next:</b> <a class="sectref" HREF="node16.html">15. How to control</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>
|