diff options
Diffstat (limited to 'docs/html/_sources/users_guide/intro.rst.txt')
-rw-r--r-- | docs/html/_sources/users_guide/intro.rst.txt | 311 |
1 files changed, 0 insertions, 311 deletions
diff --git a/docs/html/_sources/users_guide/intro.rst.txt b/docs/html/_sources/users_guide/intro.rst.txt deleted file mode 100644 index 096bdef..0000000 --- a/docs/html/_sources/users_guide/intro.rst.txt +++ /dev/null @@ -1,311 +0,0 @@ -Introduction -=============== - -Who should read this Guide? ---------------------------- - -This Users' Guide provides a technical overview and reference for -the Cheetah template system. Knowledge of Python and -object-oriented programming is assumed. The emphasis in this Guide -is on features useful in a wide variety of situations. Information -on less common situations and troubleshooting tips are gradually -being moved to the Cheetah FAQ. There is also a Cheetah Developer's -Guide for those who want to know what goes on under the hood. - -What is Cheetah? ----------------- - -Cheetah is a Python-powered template engine and code generator. It -may be used as a standalone utility or combined with other tools. -Cheetah has many potential uses, but web developers looking for a -viable alternative to ASP, JSP, PHP and PSP are expected to be its -principle user group. - -Cheetah: - - -- generates HTML, SGML, XML, SQL, Postscript, form email, LaTeX, - or any other text-based format. It has also been used to produce - Python, Java and PHP source code. - -- cleanly separates content, graphic design, and program code. - This leads to highly modular, flexible, and reusable site - architectures; faster development time; and HTML and program code - that is easier to understand and maintain. It is particularly well - suited for team efforts. - -- blends the power and flexibility of Python with a simple - template language that non-programmers can understand. - -- gives template writers full access in their templates to any - Python data structure, module, function, object, or method. - -- makes code reuse easy by providing an object-oriented interface - to templates that is accessible from Python code or other Cheetah - templates. One template can subclass another and selectively - reimplement sections of it. A compiled template **is** a Python - class, so it can subclass a pure Python class and vice-versa. - -- provides a simple yet powerful caching mechanism - -Like its namesake, Cheetah is fast, flexible and powerful. - - -What is the philosophy behind Cheetah? --------------------------------------- -Cheetah's design was guided by these principles: - - -- Python for the back end, Cheetah for the front end. Cheetah was - designed to complement Python, not replace it. - -- Cheetah's core syntax should be easy for non-programmers to - learn. - -- Cheetah should make code reuse easy by providing an - object-oriented interface to templates that is accessible from - Python code or other Cheetah templates. - -- Python objects, functions, and other data structures should be - fully accessible in Cheetah. - -- Cheetah should provide flow control and error handling. Logic - that belongs in the front end shouldn't be relegated to the back - end simply because it's complex. - -- It should be easy to **separate** content, graphic design, and - program code, but also easy to **integrate** them. - - A clean separation makes it easier for a team of content writers, - HTML/graphic designers, and programmers to work together without - stepping on each other's toes and polluting each other's work. The - HTML framework and the content it contains are two separate things, - and analytical calculations (program code) is a third thing. Each - team member should be able to concentrate on their specialty and to - implement their changes without having to go through one of the - others (i.e., the dreaded "webmaster bottleneck"). - - While it should be easy to develop content, graphics and program - code separately, it should be easy to integrate them together into - a website. In particular, it should be easy: - - - - for **programmers** to create reusable components and functions - that are accessible and understandable to designers. - - - for **designers** to mark out placeholders for content and - dynamic components in their templates. - - - for **designers** to soft-code aspects of their design that are - either repeated in several places or are subject to change. - - - for **designers** to reuse and extend existing templates and thus - minimize duplication of effort and code. - - - and, of course, for **content writers** to use the templates that - designers have created. - - - -Why Cheetah doesn't use HTML-style tags -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Cheetah does not use HTML/XML-style tags like some other template -languages for the following reasons: Cheetah is not limited to -HTML, HTML-style tags are hard to distinguish from real HTML tags, -HTML-style tags are not visible in rendered HTML when something -goes wrong, HTML-style tags often lead to invalid HTML (e.g., ``<img -src="<template-directive>">``), Cheetah tags are less verbose and -easier to understand than HTML-style tags, and HTML-style tags -aren't compatible with most WYSIWYG editors - -Besides being much more compact, Cheetah also has some advantages -over languages that put information inside the HTML tags, such as -Zope Page Templates or PHP: HTML or XML-bound languages do not work -well with other languages, While ZPT-like syntaxes work well in -many ways with WYSIWYG HTML editors, they also give up a -significant advantage of those editors - concrete editing of the -document. When logic is hidden away in (largely inaccessible) tags -it is hard to understand a page simply by viewing it, and it is -hard to confirm or modify that logic. - -Give me an example! -------------------- - -Here's a very simple example that illustrates some of Cheetah's -basic syntax: - -:: - - <HTML> - <HEAD><TITLE>$title</TITLE></HEAD> - <BODY> - - <TABLE> - #for $client in $clients - <TR> - <TD>$client.surname, $client.firstname</TD> - <TD><A HREF="mailto:$client.email">$client.email</A></TD> - </TR> - #end for - </TABLE> - - </BODY> - </HTML> - -Compare this with PSP: - -:: - - <HTML> - <HEAD><TITLE><%=title%></TITLE></HEAD> - <BODY> - - <TABLE> - <% for client in clients: %> - <TR> - <TD><%=client['surname']%>, <%=client['firstname']%></TD> - <TD><A HREF="mailto:<%=client['email']%>"><%=client['email']%></A></TD> - </TR> - <%end%> - </TABLE> - - </BODY> - </HTML> - -Section gettingStarted.tutorial has a more typical example that -shows how to get the plug-in values **into** Cheetah, and section -howWorks.cheetah-compile explains how to turn your template -definition into an object-oriented Python module. - -Give me an example of a Webware servlet! ----------------------------------------- - -This example uses an HTML form to ask the user's name, then invokes -itself again to display a **personalized** friendly greeting. - -:: - - <HTML><HEAD><TITLE>My Template-Servlet</TITLE></HEAD><BODY> - #set $name = $request.field('name', None) - #if $name - Hello $name - #else - <FORM ACTION="" METHOD="GET"> - Name: <INPUT TYPE="text" NAME="name"><BR> - <INPUT TYPE="submit"> - </FORM> - #end if - </BODY></HTML> - -To try it out for yourself on a Webware system: - - -#. copy the template definition to a file **test.tmpl** in your - Webware servlet directory. - -#. Run ``cheetah compile test.tmpl``. This produces ``test.py`` (a - .py template module) in the same directory. - -#. In your web browser, go to ``test.py``, using whatever site and - directory is appropriate. - -At the first request, field 'name' will be blank (false) so the -"#else" portion will execute and present a form. You type your name -and press submit. The form invokes the same page. Now 'name' is -true so the "#if" portion executes, which displays the greeting. -The "#set" directive creates a local variable that lasts while the -template is being filled. - -How mature is Cheetah? ----------------------- - -Cheetah is stable, production quality, post-beta code. Cheetah's -syntax, semantics and performance have been generally stable since -a performance overhaul in mid 2001. Most of the changes since -October 2001 have been in response to specific requests by -production sites, things they need that we hadn't considered. - -As of summer 2003, we are putting in the final touches before the -1.0 release. - - -Where can I get news? ---------------------- - -Cheetah releases can be obtained from the `Cheetah -website <http://cheetahtemplate.org/>`_ - -If you encounter difficulties, or are unsure about how to do something, please -post a detailed message to the `bug tracker -<https://github.com/CheetahTemplate3/cheetah3/issues>`. - -How can I contribute? ---------------------- - -Cheetah is the work of many volunteers. If you use Cheetah please -share your experiences, tricks, customizations, and frustrations. - -Bug reports and patches -~~~~~~~~~~~~~~~~~~~~~~~ - -If you think there is a bug in Cheetah, send a message to the -e-mail list with the following information: - - -#. a description of what you were trying to do and what happened - -#. all tracebacks and error output - -#. your version of Cheetah - -#. your version of Python - -#. your operating system - -#. whether you have changed anything in the Cheetah installation - - -Template libraries and function libraries -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -We hope to build up a framework of Template libraries (see section -libraries.templates) to distribute with Cheetah and would -appreciate any contributions. - -Test cases -~~~~~~~~~~ - -Cheetah is packaged with a regression testing suite that is run -with each new release to ensure that everything is working as -expected and that recent changes haven't broken anything. The test -cases are in the Cheetah.Tests module. If you find a reproduceable -bug please consider writing a test case that will pass only when -the bug is fixed. Send any new test cases to the email list with -the subject-line "new test case for Cheetah." - -Publicity -~~~~~~~~~ - -Help spread the word ... recommend it to others, write articles -about it, etc. - -Acknowledgements ----------------- - -Cheetah is one of several templating frameworks that grew out of a -'templates' thread on the Webware For Python email list. Tavis -Rudd, Mike Orr, Chuck Esterbrook and Ian Bicking are the core -developers. - -We'd like to thank the following people for contributing valuable -advice, code and encouragement: Geoff Talvola, Jeff Johnson, Graham -Dumpleton, Clark C. Evans, Craig Kattner, Franz Geiger, Geir -Magnusson, Tom Schwaller, Rober Kuzelj, Jay Love, Terrel Shumway, -Sasa Zivkov, Arkaitz Bitorika, Jeremiah Bellomy, Baruch Even, Paul -Boddie, Stephan Diehl, Chui Tey, Michael Halle, Edmund Lian and -Aaron Held. - -The Velocity, WebMacro and Smarty projects provided inspiration and -design ideas. Cheetah has benefitted from the creativity and energy -of their developers. Thank you. |