New to Django custom tags, can someone explain what this tag is doing
Python version 3.9.13
Django version 3.2.18
As I am getting endblock tag missing error when this tag is included in a template as shown below
@register.tag
def code(parser, token):
# making the node verbatim
parameters = token.split_contents()
lang = parameters[1]
try:
verbatim = parameters[2] == 'True'
except IndexError:
verbatim = True
if verbatim:
for token in parser.tokens:
contents = token.contents
if token.token_type == TokenType.BLOCK:
if contents.split()[0] == 'endcode':
break
if contents.strip():
if token.token_type == TokenType.BLOCK:
token.contents = '{% ' + contents + ' %}'
elif token.token_type == TokenType.VAR:
token.contents = '{{ ' + contents + ' }}'
token.token_type = TokenType.TEXT
nodelist = parser.parse(('endcode',))
parser.delete_first_token()
return CodeNode(nodelist, lang=lang, verbatim=verbatim)
class CodeNode(template.Node):
def __init__(self, nodelist, lang, verbatim):
self.nodelist = nodelist
self.lang = lang
self.verbatim = verbatim
def render(self, context):
contents = self.nodelist.render(context).replace('\n', '', 1)
if self.verbatim:
contents = remove_indentation(contents)
inner_template = template.Template(
'{% load pygmentify %}'
'{% pygment %}{% verbatim %}'
f'<pre lang={self.lang}>{contents}</pre>'
'{% endverbatim %}{% endpygment %}'
)
return inner_template.render(context)
example usage of tag in code are
{% code 'django' %}
{% international_header
navigation_tree=my_navigation_tree
site_section='<site-></site->section'
site_sub_section='site-sub-section'
%}
{% endcode %}
Thanks in advance