Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
89 lines (59 sloc) 2.567 kB

12: Templating With jinja2

We just said Pyramid doesn't prefer one templating language over another. Time to prove it. Jinja2 is a popular templating system, used in Flask and modeled after Django's templates. Let's add pyramid_jinja2, a Pyramid :term:`add-on` which enables Jinja2 as a :term:`renderer` in our Pyramid applications.

Objectives

  • Show Pyramid's support for different templating systems
  • Learn about installing Pyramid add-ons

Steps

  1. In this step let's start by copying the view_class step's directory, and then installing the pyramid_jinja2 add-on.

    $ cd ..; cp -r view_classes jinja2; cd jinja2
    $ $VENV/bin/python setup.py develop
    $ $VENV/bin/easy_install pyramid_jinja2
  2. We need to include pyramid_jinja2 in jinja2/tutorial/__init__.py:

  3. Our jinja2/tutorial/views.py simply changes its renderer:

  4. Add jinja2/tutorial/home.jinja2 as a template:

  5. Now run the tests:

    $ $VENV/bin/nosetests tutorial
  6. Run your Pyramid application with:

    $ $VENV/bin/pserve development.ini --reload
  7. Open http://localhost:6543/ in your browser.

Analysis

Getting a Pyramid add-on into Pyramid is simple. First you use normal Python package installation tools to install the add-on package into your Python. You then tell Pyramid's configurator to run the setup code in the add-on. In this case the setup code told Pyramid to make a new "renderer" available that looked for .jinja2 file extensions.

Our view code stayed largely the same. We simply changed the file extension on the renderer. For the template, the syntax for Chameleon and Jinja2's basic variable insertion is very similar.

Extra Credit

  1. Our project now depends on pyramid_jinja2. We installed that dependency manually. What is another way we could have made the association?
  2. We used config.include which is an imperative configuration to get the :term:`Configurator` to load pyramid_jinja2's configuration. What is another way could include it into the config?
Jump to Line
Something went wrong with that request. Please try again.