Armin Ronacher | 92f572f | 2007-02-26 22:17:32 +0100 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | """ |
Armin Ronacher | 07bc684 | 2008-03-31 14:18:49 +0200 | [diff] [blame] | 3 | jinja2 |
| 4 | ~~~~~~ |
Armin Ronacher | ae16fd0 | 2007-03-27 21:31:24 +0200 | [diff] [blame] | 5 | |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 6 | Jinja2 is a template engine written in pure Python. It provides a |
| 7 | Django inspired non-XML syntax but supports inline expressions and |
| 8 | an optional sandboxed environment. |
Armin Ronacher | ae16fd0 | 2007-03-27 21:31:24 +0200 | [diff] [blame] | 9 | |
| 10 | Nutshell |
| 11 | -------- |
| 12 | |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 13 | Here a small example of a Jinja2 template:: |
Armin Ronacher | ae16fd0 | 2007-03-27 21:31:24 +0200 | [diff] [blame] | 14 | |
| 15 | {% extends 'base.html' %} |
| 16 | {% block title %}Memberlist{% endblock %} |
| 17 | {% block content %} |
| 18 | <ul> |
| 19 | {% for user in users %} |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 20 | <li><a href="{{ user.url }}">{{ user.username }}</a></li> |
Armin Ronacher | ae16fd0 | 2007-03-27 21:31:24 +0200 | [diff] [blame] | 21 | {% endfor %} |
| 22 | </ul> |
| 23 | {% endblock %} |
| 24 | |
Armin Ronacher | ae16fd0 | 2007-03-27 21:31:24 +0200 | [diff] [blame] | 25 | |
Armin Ronacher | 55494e4 | 2010-01-22 09:41:48 +0100 | [diff] [blame] | 26 | :copyright: (c) 2010 by the Jinja Team. |
Armin Ronacher | 92f572f | 2007-02-26 22:17:32 +0100 | [diff] [blame] | 27 | :license: BSD, see LICENSE for more details. |
| 28 | """ |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 29 | __docformat__ = 'restructuredtext en' |
| 30 | try: |
| 31 | __version__ = __import__('pkg_resources') \ |
| 32 | .get_distribution('Jinja2').version |
| 33 | except: |
| 34 | __version__ = 'unknown' |
| 35 | |
| 36 | # high level interface |
| 37 | from jinja2.environment import Environment, Template |
| 38 | |
| 39 | # loaders |
Armin Ronacher | 9a82205 | 2008-04-17 18:44:07 +0200 | [diff] [blame] | 40 | from jinja2.loaders import BaseLoader, FileSystemLoader, PackageLoader, \ |
Armin Ronacher | 64b08a0 | 2010-03-12 03:17:41 +0100 | [diff] [blame] | 41 | DictLoader, FunctionLoader, PrefixLoader, ChoiceLoader, \ |
| 42 | ModuleLoader |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 43 | |
Armin Ronacher | a816bf4 | 2008-09-17 21:28:01 +0200 | [diff] [blame] | 44 | # bytecode caches |
Armin Ronacher | aa1d17d | 2008-09-18 18:09:06 +0200 | [diff] [blame] | 45 | from jinja2.bccache import BytecodeCache, FileSystemBytecodeCache, \ |
| 46 | MemcachedBytecodeCache |
Armin Ronacher | a816bf4 | 2008-09-17 21:28:01 +0200 | [diff] [blame] | 47 | |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 48 | # undefined types |
Armin Ronacher | c63243e | 2008-04-14 22:53:58 +0200 | [diff] [blame] | 49 | from jinja2.runtime import Undefined, DebugUndefined, StrictUndefined |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 50 | |
Armin Ronacher | d134231 | 2008-04-28 12:20:12 +0200 | [diff] [blame] | 51 | # exceptions |
| 52 | from jinja2.exceptions import TemplateError, UndefinedError, \ |
Armin Ronacher | 31bbd9e | 2010-01-14 00:41:30 +0100 | [diff] [blame] | 53 | TemplateNotFound, TemplatesNotFound, TemplateSyntaxError, \ |
| 54 | TemplateAssertionError |
Armin Ronacher | d134231 | 2008-04-28 12:20:12 +0200 | [diff] [blame] | 55 | |
Armin Ronacher | 203bfcb | 2008-04-24 21:54:44 +0200 | [diff] [blame] | 56 | # decorators and public utilities |
Armin Ronacher | f59bac2 | 2008-04-20 13:11:43 +0200 | [diff] [blame] | 57 | from jinja2.filters import environmentfilter, contextfilter |
Armin Ronacher | 187bde1 | 2008-05-01 18:19:16 +0200 | [diff] [blame] | 58 | from jinja2.utils import Markup, escape, clear_caches, \ |
Armin Ronacher | 9bb7e47 | 2008-05-28 11:26:59 +0200 | [diff] [blame] | 59 | environmentfunction, contextfunction, is_undefined |
Armin Ronacher | 7259c76 | 2008-04-30 13:03:59 +0200 | [diff] [blame] | 60 | |
| 61 | __all__ = [ |
| 62 | 'Environment', 'Template', 'BaseLoader', 'FileSystemLoader', |
| 63 | 'PackageLoader', 'DictLoader', 'FunctionLoader', 'PrefixLoader', |
Armin Ronacher | ccae055 | 2008-10-05 23:08:58 +0200 | [diff] [blame] | 64 | 'ChoiceLoader', 'BytecodeCache', 'FileSystemBytecodeCache', |
| 65 | 'MemcachedBytecodeCache', 'Undefined', 'DebugUndefined', |
| 66 | 'StrictUndefined', 'TemplateError', 'UndefinedError', 'TemplateNotFound', |
Armin Ronacher | 31bbd9e | 2010-01-14 00:41:30 +0100 | [diff] [blame] | 67 | 'TemplatesNotFound', 'TemplateSyntaxError', 'TemplateAssertionError', |
Armin Ronacher | 64b08a0 | 2010-03-12 03:17:41 +0100 | [diff] [blame] | 68 | 'ModuleLoader', 'environmentfilter', 'contextfilter', 'Markup', 'escape', |
Armin Ronacher | 31bbd9e | 2010-01-14 00:41:30 +0100 | [diff] [blame] | 69 | 'environmentfunction', 'contextfunction', 'clear_caches', 'is_undefined' |
Armin Ronacher | 7259c76 | 2008-04-30 13:03:59 +0200 | [diff] [blame] | 70 | ] |