Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Mako template bindings for repoze.bfg

Project Description
``repoze.bfg`` bindings for `Mako <http://www.makotemplates.org/>`_
===================================================================

These are bindings for the `Mako templating system
<http://www.makotemplates.org/>`_ for the `repoze.bfg
<http://bfg.repoze.org/`_ web framework.

High-Level API
--------------

The API follows the pattern of the "default" template API for
``repoze.bfg``, which includes three functions: ``get_template``,
``render_template``, and ``render_template_to_response``. From within
a repoze.bfg view function, you might do::

from webob import Response

from repoze.bfg.renderers import get_renderer
template = get_renderer('templates/foo.mak')
return Response(template.render_unicode(foo=1))

Or::

from repoze.bfg.renderers import render
s = render('templates/foo.mak', {foo:1})
return Response(s)

Or::

from repoze.bfg.renderers import render_to_response
return render_to_response('templates/foo.mak', {foo:1})

All of these examples are equivalent. The first argument passed in to
each of them (representing the template location) should be a file
path relative to the lookup loader root.

The value passed to ``render`` or ``render_to_response`` should be one
of the following:

- A *dictionary* representing the values passed to the template.

- A *tuple*, consisting of two values in the form ``(function_name,
values)``. If a tuple is returned, the ``def`` named after
``function_name`` in the template is rendered instead of the entire
template using the ``values`` provided, which must be a dictionary).
Positional arguments to the function defined within the template are
filled in by name using the same-named values within the ``values``
dictionary.

Configuring the Loookup Loader
------------------------------

In your bfg application's ``.ini`` file, use a ``mako.directories``
setting::

[app:main]
use = egg:mypackage
mako.directories = mypackage:templates
anotherpackage:templates
reload_templates = true
debug_authorization = false
debug_notfound = false

``mako.directories`` should be a sequence of absolute directory names
or resource specifications, one per line.

Other values:

``mako.input_encoding``
Set the mako template input encoding. The default is ``utf-8``.

``reload_templates``
If this is ``True``, Mako templates will be checked for changes at
every rendering boundary. This slows down rendering but is
convenient for development.

Ensuring the Mako Renderer Extension is Active
----------------------------------------------

``repoze.bfg.mako`` can also act as a "renderer" for a view when it is
active in the ``repoze.bfg`` application you're developing::

@bfg_view(renderer='templates/foo.mak')
def aview(request):
return {'foo':1}

There are two ways to make sure that the mako extension is active.
Both are completely equivalent.

#) Ensure that some ZCML file with an analogue of the following
contents is executed::

<include package="repoze.bfg.mako"/>

#) Call the ``add_renderer`` method of a Configurator in your
application:

from repoze.bfg.mako import renderer_factory
config.add_renderer(.'mak', renderer_factory)
config.add_renderer(.'mako', renderer_factory)

In either case, files with the ``.mak`` and ``.mako`` extensions are
now considered to be Mako templates.

Note that when mako is used as a ``renderer`` in this fashion, the
``repoze.bfg`` context that is usually available as ``context`` within
the template global namespace is available as ``_context`` (the
``context`` name without the underscore is reserved for internal Mako
usage).

Installation
------------

Install using setuptools, e.g. (within a virtualenv)::

$ easy_install -i http://dist.repoze.org/bfg/dev/simple repoze.bfg.mako

Creating a Mako ``repoze.bfg`` Project
--------------------------------------

After you've got ``repoze.bfg.mako`` installed, you can invoke the
following command to create a Mako-based ``repoze.bfg`` project::

$ paster create -t bin/paster create -t bfg_mako_starter

Reporting Bugs / Development Versions
-------------------------------------

Visit http://bugs.repoze.org to report bugs. Visit
http://svn.repoze.org to download development or tagged versions.




0.3 (2010-09-19)
----------------

- A ``repoze.bfg.mako`` renderer may now be called with a *tuple*,
consisting of two values in the form ``(function_name, values)``.
If a tuple is provided to a renderer, the ``def`` named after
``function_name`` in the template is rendered instead of the entire
template using the ``values`` provided, which must be a dictionary).

0.2 (2010-09-06)
----------------

- Removed ``repoze.bfg.mako`` functions named ``render_template``,
``render_template_to_response``, ``get_template`` and
``get_renderer``. As of ``repoze.bfg`` 1.3a6, use of these
functions should be replaced with usage of similarly-named functions
present in the ``repoze.bfg.renderers`` module .

- Added integration tests for imperative rendering and ZCML loading.

0.1 (2010-07-24)
----------------

- Initial release.
Release History

Release History

This version
History Node

0.3

History Node

0.2

History Node

0.1

Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
repoze.bfg.mako-0.3.tar.gz (25.3 kB) Copy SHA256 Checksum SHA256 Source Sep 19, 2010

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting