PyJade is a high performance template preprocessor, that converts any .jade source to the each Template-language (Django, Jinja2 or Mako).
First, you must do:
pip install pyjade
Or:
python setup.py install
Now simply name your templates with a .jade
extension and this jade compiler
will do the rest. Any templates with other extensions will not be compiled
with the pyjade compiler.
In settings.py
, modify TEMPLATE_LOADERS
like:
TEMPLATE_LOADERS = (
'pyjade.ext.django.loaders.FSLoader',
'pyjade.ext.django.loaders.AppLoader',
)
These replace your usual Django loaders:
django.template.loaders.filesystem.Loader
django.template.loaders.app_directories.Loader
Just add pyjade.ext.jinja.PyJadeExtension
as extension:
jinja_env = Environment(extensions=['pyjade.ext.jinja.PyJadeExtension'])
Just add pyjade.ext.mako.preprocessor
as preprocessor:
from pyjade.ext.mako import preprocessor as mako_preprocessor
mako.template.Template(jade_source,
preprocessor=mako_preprocessor
)
Actually the mako preprocessor is in development mode
Just add pyjade.ext.jinja.PyJadeExtension
as extension to the environment of the app::
app.jinja_env.add_extension('pyjade.ext.jinja.PyJadeExtension')
Adjust your "your_project/init.py" and add the following line somewhere to in the main() function:
config.include('pyjade.ext.pyramid')
The same as the Jade Node.js module (except of no commas on attributes): https://github.com/visionmedia/jade/blob/master/Readme.md
This code:
!!! 5
html(lang="en")
head
title= pageTitle
script(type='text/javascript')
if (foo) {
bar()
}
body
h1.title Jade - node template engine
#container
if youAreUsingJade
p You are amazing
else
p Get on it!
Converts to:
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{pageTitle}}</title>
<script type='text/javascript'>
if (foo) {
bar()
}
</script>
</head>
<body>
<h1 class="title">Jade - node template engine</h1>
<div id="container">
{%if youAreUsingJade%}
<p>You are amazing</p>
{%else%}
<p>Get on it!</p>
{%endif%}
</div>
</body>
</html>