How to install repoze.bfg.mako
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install repoze.bfg.mako
Lastest release
These are bindings for the Mako templating system 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.