public
Last active — forked from ericflo/verbatim_templatetag.py

verbatim Django template tag

  • Download Gist
verbatim_templatetag.py
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
"""
jQuery templates use constructs like:
 
{{if condition}} print something{{/if}}
 
This, of course, completely screws up Django templates,
because Django thinks {{ and }} mean something.
 
Wrap {% verbatim %} and {% endverbatim %} around those
blocks of jQuery templates and this will try its best
to output the contents with no changes.
"""
 
from django import template
 
register = template.Library()
 
 
class VerbatimNode(template.Node):
 
def __init__(self, text):
self.text = text
def render(self, context):
return self.text
 
 
@register.tag
def verbatim(parser, token):
text = []
while 1:
token = parser.tokens.pop(0)
if token.contents == 'endverbatim':
break
if token.token_type == template.TOKEN_VAR:
text.append('{{')
elif token.token_type == template.TOKEN_BLOCK:
text.append('{%')
text.append(token.contents)
if token.token_type == template.TOKEN_VAR:
text.append('}}')
elif token.token_type == template.TOKEN_BLOCK:
text.append('%}')
return VerbatimNode(''.join(text))

So useful, thanks!

Just what I need... thank you!

Thanks this solves it for django 1.4

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.