How can I tell Django templates not to parse a block containing code that looks like template tags?

后端 未结 2 1018
栀梦
栀梦 2021-02-13 03:56

I\'ve got some html files that include templates to be used by jQuery.tmpl. Some tmpl tags (like {{if...}}) look like Django template tags and cause a TemplateSynta

相关标签:
2条回答
  • 2021-02-13 04:35

    There are a couple open ticket to address this issue: https://code.djangoproject.com/ticket/14502 and https://code.djangoproject.com/ticket/16318 You can find a proposed new template tag verbatim below:

    """
    From https://gist.github.com/1313862
    """
    
    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))
    
    0 讨论(0)
  • 2021-02-13 04:39

    As of Django 1.5, this is now handled by the built-in verbatim template tag.

    In older versions of Django, the built-in way would be to manually escape each template item with the templatetag template tag ( https://docs.djangoproject.com/en/1.3/ref/templates/builtins/#templatetag ), but I suspect that that's not what you want to do.

    What you really want is a way to mark a whole block as raw (rather than interpretable) text, which requires a new custom tag. You might want to check out the raw tag here: http://www.holovaty.com/writing/django-two-phased-rendering/

    0 讨论(0)
提交回复
热议问题