This is the documentation for the Jinja2 general purpose templating language. Jinja2 is a library for Python that is designed to be flexible, fast and secure.
If you have any exposure to other text-based template languages, such as Smarty or Django, you should feel right at home with Jinja2. It’s both designer and developer friendly by sticking to Python’s principles and adding functionality useful for templating environments.
Prerequisites
Jinja2 works with Python 2.6.x, 2.7.x and >= 3.3. If you are using Python 3.2 you can use an older release of Jinja2 (2.6) as support for Python 3.2 was dropped in Jinja2 version 2.7.
If you wish to use the PackageLoader
class, you will also
need setuptools or distribute installed at runtime.
Installation
You have multiple ways to install Jinja2. If you are unsure what to do, go with the Python egg or tarball.
As a Python egg (via [UNKNOWN NODE title_reference])
You can install the most recent Jinja2 version using easy_install or pip:
easy_install Jinja2
pip install Jinja2
This will install a Jinja2 egg in your Python installation’s site-packages directory.
From the tarball release
- Download the most recent tarball from the download page
- Unpack the tarball
python setup.py install
Note that you either have to have [UNKNOWN NODE title_reference] or [UNKNOWN NODE title_reference] installed; the latter is preferred.
This will install Jinja2 into your Python installation’s site-packages directory.
Installing the development version
- Install git
git clone git://github.com/pallets/jinja.git
cd jinja2
ln -s jinja2 /usr/lib/python2.X/site-packages
As an alternative to steps 4 you can also do python setup.py develop
which will install the package via [UNKNOWN NODE title_reference] in development mode. This also
has the advantage that the C extensions are compiled.
MarkupSafe Dependency
As of version 2.7 Jinja2 depends on the MarkupSafe module. If you install Jinja2 via [UNKNOWN NODE title_reference] or [UNKNOWN NODE title_reference] it will be installed automatically for you.
Basic API Usage
This section gives you a brief introduction to the Python API for Jinja2 templates.
The most basic way to create a template and render it is through
Template
. This however is not the recommended way to
work with it if your templates are not loaded from strings but the file
system or another data source:
By creating an instance of Template
you get back a new template
object that provides a method called render()
which when
called with a dict or keyword arguments expands the template. The dict
or keywords arguments passed to the template are the so-called “context”
of the template.
What you can see here is that Jinja2 is using unicode internally and the return value is an unicode string. So make sure that your application is indeed using unicode internally.