Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
verbatim Django template tag
"""
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))
@jshaw

This comment has been minimized.

Copy link

jshaw commented Oct 12, 2012

So useful, thanks!

@max-b

This comment has been minimized.

Copy link

max-b commented Jan 20, 2013

Super helpful!

@c0x6a

This comment has been minimized.

Copy link

c0x6a commented Feb 13, 2013

Just what I need... thank you!

@dzen

This comment has been minimized.

Copy link

dzen commented Feb 19, 2013

@Ahmad-Dukhan

This comment has been minimized.

Copy link

Ahmad-Dukhan commented May 12, 2013

Thanks this solves it for django 1.4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.