Mustache
The Mustache Extension provides output and file templating based on the Mustache Templating Language.
Documentation References:
API References
- Pystache
Cement 3.0.8+:
pip install cement[mustache]
Applications using Cement <3.0.8 should continue to include
pystache
in their dependencies.This extension honors the following settings under the primary namespace (ex:
[myapp]
) of the application configuration:Setting | Description |
template_dir | Directory path of a local template directory. |
Option | Description |
template_handler | A template handler to use as the backend for templating |
template_dirs | A list of data directories to look for templates |
template_module | A python module to look for templates |
Example: Mustache Output Handler
from cement import App
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['mustache']
output_handler = 'mustache'
with MyApp() as app:
app.run()
# create some data
data = {
'foo': 'bar',
}
# render the data to STDOUT (default) via a template
app.render(data, 'my_template.mustache')
Example: Using Mustache Template Handler
from cement import App
class MyApp(App):
class Meta:
label = 'myapp'
extensions = ['mustache']
template_handler = 'mustache'
with MyApp() as app:
app.run()
# create some data
data = {
'foo': 'bar'
}
# copy a source template directory to destination
app.template.copy('/path/to/source/',
'/path/to/destination/',
data)
# render any content as a template
app.template.render('foo -> {{ foo }}', data)
Mustache supports
partials
, or in other words template includes
. These are also loaded by the output handler, but require a full file name. The partials will be loaded in the same way as the base templates.Example: Using Mustache Partials
templates/base.mustache
Inside base.mustache
{{> partial.mustache}}
templates/partial.mustache
Inside partial.mustache
The above would output:
Inside base.mustache
Inside partial.mustache
Last modified 1yr ago