summaryrefslogtreecommitdiff
path: root/docs/users_guide_2_src/03_gettingStarted.txt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/users_guide_2_src/03_gettingStarted.txt')
-rwxr-xr-xdocs/users_guide_2_src/03_gettingStarted.txt262
1 files changed, 262 insertions, 0 deletions
diff --git a/docs/users_guide_2_src/03_gettingStarted.txt b/docs/users_guide_2_src/03_gettingStarted.txt
new file mode 100755
index 0000000..6e447c2
--- /dev/null
+++ b/docs/users_guide_2_src/03_gettingStarted.txt
@@ -0,0 +1,262 @@
+Getting Started
+========================================
+
+..
+ :label: gettingStarted
+
+
+Requirements
+----------------------------------------
+
+..
+ :label: gettingStarted.requirements
+
+Cheetah requires Python release 2.2 or newer, and has been tested with all
+versions through 2.4.2. It should run everywhere Python runs, and has been
+tested on Linux, Windows NT/98/XP, FreeBSD, Solaris, and Mac OS X.
+
+99% of Cheetah is written in Python. There is one small C module
+(``_namemapper.so``) for speed, but Cheetah automatically falls back to a
+Python equivalent (``NameMapper.py``) if the C module is not available.
+
+
+Installation
+----------------------------------------
+
+..
+ :label: gettingStarted.install
+
+If you have ``easy_install``
+(http://peak.telecommunity.com/DevCenter/EasyInstall) set up, this command will
+download and install the latest version of Cheetah as a Python Egg
+(http://peak.telecommunity.com/DevCenter/PythonEggs)::
+
+ # easy_install Cheetah
+
+Or from an already-downloaded tarball::
+
+ # easy_install Cheetah-2.0.tar.gz
+
+Or from an unpacked source directory or CVS sandbox::
+
+ # easy_install .
+
+If you don't have ``easy_install``, you'll have to install Cheetah manually::
+
+ # tar xzvf Cheetah-2.0.tar.gz
+ # cd Cheetah-2.0
+ # python setup.py install
+
+You can also specify non-default locations::
+
+ # python setup.py install --install-lib=/home/tavis/python
+ # python setup.py install --home=/home/tavis
+ # python setup.py install --help
+
+.. tip::
+
+ If you install Cheetah manually and then install an egg that depends on
+ Cheetah (like TurboCheetah_), ``easy_install`` may *reinstall*
+ Cheetah as an egg. This leaves two copies of Cheetah on your system,
+ possibly different versions. Python will use whichever version comes
+ first in the Python path. To avoid this, use ``easy_install``'s
+ **--no-deps** option or delete the copy you don't wish to use.
+
+
+Uninstalling
+----------------------------------------
+
+..
+ :label: gettingstarted.uninstalling
+
+To uninstall Cheetah:
+
+1. Delete the "cheetah" program
+from whichever bin/ directory it was put in (perhaps /usr/local/bin/).
+
+2. If Cheetah was installed as an egg, delete the egg directory
+(e.g., /usr/local/lib/python2.4/site-packages/Cheetah-2.0-py2.4.egg/), and
+remove the "Cheetah" line in **easy-install.pth** in the same directory.
+
+3. If Cheetah was not installed as an egg, delete the package directory
+(e.g., /usr/local/lib/python2.4/site-packages/Cheetah/).
+
+
+The 'cheetah' command
+----------------------------------------
+
+..
+ :label: gettingStarted.cheetah
+
+Cheetah comes with a utility "cheetah" that provides a command-line
+interface to various housekeeping tasks. The command's first argument is
+the name of the task. The following commands are currently supported::
+
+ cheetah compile [options] [FILES ...] : Compile template definitions
+ cheetah fill [options] [FILES ...] : Fill template definitions
+ cheetah help : Print this help message
+ cheetah options : Print options help message
+ cheetah test : Run Cheetah's regression tests
+ cheetah version : Print Cheetah version number
+
+You only have to type the first letter of the command:
+``cheetah c`` is the same as ``cheetah compile``.
+
+The test suite is described in the next section. The ``compile``
+command in section \ref{howWorks.cheetah-compile},
+and the ``fill`` command in section \ref{howWorks.cheetah-fill}.
+
+
+Testing your installation
+----------------------------------------
+
+..
+ :label: gettingStarted.test
+
+After installing Cheetah, you can run its self-test routine to verify it's
+working properly on your system. First cd to to any directory you have write
+permission in (the tests write temporary files) *except* the unpacked Cheetah
+source directory (it might produce spurious errors). Type the following at the
+command prompt::
+
+ $ cheetah test
+
+The tests will run for about three minutes and print a success/failure
+message. If the tests pass, start Python in interactive mode and try the
+example in the next section.
+
+Sometimes the CheetahWrapper tests fail on Windows because they can't execute
+"cheetah" via ``os.system()``. Ignore these; you won't be doing this when
+you use Cheetah.
+
+If any other tests fail, please send a message to the e-mail list with a copy
+of the test output and the following details about your installation:
+
+* your version of Cheetah
+* your version of Python
+* your operating system
+* whether you have changed anything in the Cheetah installation
+
+
+
+Quickstart tutorial
+----------------------------------------
+
+..
+ :label: gettingStarted.tutorial
+
+This tutorial briefly introduces how to use Cheetah from the Python prompt.
+The following chapters will discuss other ways to use templates and more of
+Cheetah's features.
+
+The core of Cheetah is the ``Template`` class in the ``Cheetah.Template``
+module. The following example shows how to use the ``Template`` class in an
+interactive Python session. ``t`` is the Template instance. Lines prefixed
+with ``>>>`` and ``...`` are user input. The remaining lines are Python
+output. ::
+
+ >>> from Cheetah.Template import Template
+ >>> templateDef = """
+ ... <HTML>
+ ... <HEAD><TITLE>$title</TITLE></HEAD>
+ ... <BODY>
+ ... $contents
+ ... ## this is a single-line Cheetah comment and won't appear in the output
+ ... #* This is a multi-line comment and won't appear in the output
+ ... blah, blah, blah
+ ... *#
+ ... </BODY>
+ ... </HTML>"""
+ >>> namespace = {'title': 'Hello World Example', 'contents': 'Hello World!'}
+ >>> t = Template(templateDef, namespaces=[namespace])
+ >>> print t
+
+ <HTML>
+ <HEAD><TITLE>Hello World Example</TITLE></HEAD>
+ <BODY>
+ Hello World!
+ </BODY>
+ </HTML>
+ >>> print t # print it as many times as you want
+ [ ... same output as above ... ]
+ >>> namespace['title'] = 'Example #2'
+ >>> namespace['contents'] = 'Hiya Planet Earth!'
+ >>> print t # Now with different plug-in values.
+ <HTML>
+ <HEAD><TITLE>Example #2</TITLE></HEAD>
+ <BODY>
+ Hiya Planet Earth!
+ </BODY>
+ </HTML>
+
+Because Cheetah is extremely flexible, you can achieve the same result this
+way::
+
+ >>> t2 = Template(templateDef)
+ >>> t2.title = 'Hello World Example!'
+ >>> t2.contents = 'Hello World'
+ >>> print t2
+ [ ... same output as the first example above ... ]
+ >>> t2.title = 'Example #2'
+ >>> t2.contents = 'Hello World!'
+ >>> print t2
+ [ ... same as Example #2 above ... ]
+
+Or the values can be extracted from an object's attributes.
+
+ >>> myInstance.title
+ 'Hello World Example!'
+ >>> myInstance.contents = 'Hello World!'
+ >>> t2 = Template(templateDef, namespaces=[myInstance])
+
+The template will search your namespaces in order, then its own ``self``
+attributes, until it finds a match. The template definition can also
+come from a file rather than a string.
+
+Let's look at the ``Template`` constructor again::
+
+ t = Template(templateDef, namespaces=[namespace])
+
+This does more than it appears. It compiles the template definition into a
+template class, a subclass of ``Template``, and instantiates it. Sometimes
+it's desirable to separate these operations, and the ``.compile`` class method
+does this::
+
+ tclass = Template.compile(templateDef)
+ t = tclass(namespaces=[namespace])
+
+The first line compiles the template class; the second line instantiates it.
+You can also do this on one line::
+
+ t = Template.compile(templateDef)(namespaces=[namespace])
+
+You can use either ``Template()`` or ``Template.compile()`` in your programs,
+but you should learn both styles so you'll recognize them in other people's
+code.
+
+This is all fine for short templates, but for long templates or for an
+application that depends on many templates, it's easier to store the templates
+in separate \*.tmpl files and use the **cheetah** program to compile
+them into Python modules. This will be covered in section
+\ref{howWorks.cheetah-compile}. Here's how you use a precompiled template::
+
+ >>> from MyPrecompiledTemplate import MyPrecompiledTemplate
+ >>> t = MyPrecompiledTemplate()
+ >>> t.name = "Fred Flintstone"
+ >>> t.city = "Bedrock City"
+ >>> print t
+
+Or::
+
+ >>> from MyPrecompiledTemplate import MyPrecompiledTemplate
+ >>> namespace = {"name": "Fred Flintstone", "city": "Bedrock City"}
+ >>> t = MyPrecompiledTemplate(namespaces=[namespace])
+ >>> print t
+
+For the minimalists out there, here's a template compilation,
+instantiation and filling all in one Python statement::
+
+ >>> print Template("Templates are pretty useless without placeholders.")
+ Templates are useless without placeholders.
+
+.. _TurboCheetah: http://python.org/pypi/TurboCheetah/