In some cases it can be useful to enable Django tags within your Jinja2 templates, for example… when you are converting your templates but still have some legacy tags/filters that don’t support Jinja2 or if you are using a project without Jinja2 support.
Luckily, that’s not too difficult to achieve with Jinja2, actually a lot easier than the reverse as discussed in http://w.wol.ph/2013/07/28/mixing-django-with-jinja2-without-losing-template-debugging/
It should be noted that the Coffin library is used in this example but these imports could easily be replaced with straight up Jinja2.
The actual code:
[python]
from django import template as django_template
from jinja2 import nodes, contextfunction, ext
from coffin.template import Library, Template
# Create a Library to register the tags
register = Library()
# The actual Django templatag for Jinja
class Django(ext.Extension):
    tags = set([‘django’])
    def preprocess(self, source, name, filename=None):
        source = source.replace(‘{% django %}’, ‘{% django %}{% raw %}’)
        source = source.replace(‘{% enddjango %}’,
            ‘{% endraw %}{% enddjango %}’)
        return source
    def parse(self, parser):
        lineno = parser.stream.next().lineno
        while not parser.stream.next().test(‘block_end’):
            pass
body = nodes.Const(parser.stream.next().value)
        while not parser.stream.current.test(‘block_end’):
            parser.stream.next()
        return nodes.Output([
            self.call_method(‘_django’, args=[body], kwargs=[]),
        ]).set_lineno(lineno=lineno)
    @contextfunction
    def _django(self, context, html):
        return django(context, html)
# Registering the tag
register.tag(Django)
# Alternatively, we can also call `django()` as a function.
# Our templatetag silently converts the Django tag to this function call
@contextfunction
@register.object
def django(context, html):
    context = django_template.RequestContext(context[‘request’], context)
    return django_template.Template(html).render(context)
[/python]
Now the tag can be used like this:
[htmldjango]
{% if foo == bar %}
Jinja style if…
{% endif %}
{% django %}
{% ifequal foo bar %}
Django style if…
{% endif %}
{% enddjango %}
[/htmldjango]

 
			 
nice information