diff options
Diffstat (limited to 'recipes/staticmethod.html')
-rw-r--r-- | recipes/staticmethod.html | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/recipes/staticmethod.html b/recipes/staticmethod.html new file mode 100644 index 0000000..3224bd7 --- /dev/null +++ b/recipes/staticmethod.html @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>@staticmethod and @classmethod — Cheetah - The Python-Powered Template Engine</title> + <link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '2.2.1', + COLLAPSE_MODINDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <link rel="top" title="Cheetah - The Python-Powered Template Engine" href="../index.html" /> + <link rel="up" title="User Documentation" href="../documentation.html" /> + <link rel="prev" title="User Documentation" href="../documentation.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../documentation.html" title="User Documentation" + accesskey="P">previous</a> |</li> + <li><a href="../index.html">Cheetah - The Python-Powered Template Engine</a> »</li> + <li><a href="../documentation.html" accesskey="U">User Documentation</a> »</li> + </ul> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h4>Previous topic</h4> + <p class="topless"><a href="../documentation.html" + title="previous chapter">User Documentation</a></p> + <h3>This Page</h3> + <ul class="this-page-menu"> + <li><a href="../_sources/recipes/staticmethod.txt" + rel="nofollow">Show Source</a></li> + </ul> + <div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" size="18" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> + </div> + <script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="staticmethod-and-classmethod"> +<h1>@staticmethod and @classmethod<a class="headerlink" href="#staticmethod-and-classmethod" title="Permalink to this headline">ΒΆ</a></h1> +<p>Refer the Python’s documentation if you’re unfamiliar with either +<a class="reference external" href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> or +<a class="reference external" href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> and their uses in Python, as they +pertain to their uses in Cheetah as well. Using <a class="reference external" href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> it’s +trivial to create <em>utility templates</em> which are common when using +Cheetah for web development. These <em>utility templates</em> might contain +a number of small functions which generate useful snippets of markup.</p> +<p>For example:</p> +<div class="highlight-python"><pre>#def copyright() + #import time + &copy; CheetahCorp, Inc. $time.strftime('%Y', time.gmtime()) +#end def</pre> +</div> +<p><strong>Figure 1, util.tmpl</strong></p> +<p>Prior to version <strong>v2.2.0</strong> of Cheetah, there wasn’t really an easy means +of filling templates with bunches of these small utility functions. In +<strong>v2.2.0</strong> however, you can decorate these methods with <cite>#@staticmethod</cite> +and use “proper” Python syntax for calling them, <strong>fig 1</strong> revisited:</p> +<div class="highlight-python"><pre>#@staticmethod +#def copyright() + #import time + &copy; CheetahCorp, Inc. $time.strftime('%Y', time.gmtime()) +#end def</pre> +</div> +<p><strong>Figure 1.1, util.tmpl</strong></p> +<p>With the addition of the <a class="reference external" href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> decorator, the <cite>copyright()</cite> +function can now be used without instantiating an instance of the <cite>util</cite> +template class. In effect:</p> +<div class="highlight-python"><pre>#from util import util + +<strong>This is my page</strong> +<br/> +<hr noshade/> +$util.copyright()</pre> +</div> +<p><strong>Figure 2, index.tmpl</strong></p> +<p>This approach is however no means to structure anything complex, +<a class="reference external" href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a> and <a class="reference external" href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> use in Cheetah is not meant as a +replacement for properly structured class hierarchies (which +Cheetah supports). That said if you are building a web application +<a class="reference external" href="http://docs.python.org/library/functions.html#staticmethod">@staticmethod</a>/<a class="reference external" href="http://docs.python.org/library/functions.html#classmethod">@classmethod</a> are quite useful for the little snippets +of markup, etc that are needed (Google AdSense blocks, footers, +banners, etc).</p> +</div> + + + </div> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../documentation.html" title="User Documentation" + >previous</a> |</li> + <li><a href="../index.html">Cheetah - The Python-Powered Template Engine</a> »</li> + <li><a href="../documentation.html" >User Documentation</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2009, R. Tyler Ballance. + Last updated on Jun 01, 2009. + Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1. + </div> + </body> +</html>
\ No newline at end of file |