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.
===================================================================
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
repoze.bfg.mako-0.3.tar.gz
(25.3 kB
view hashes)