模板中未加载自定义标签 [英] Custom tag not loaded in template
问题描述
我创建了一个想要使用的自定义标签,但 Django 似乎找不到它.我的 templatetags
目录是这样设置的:
pygmentize.py
from pygments 导入高亮从 pygments.lexers 导入 get_lexer_by_name从 Django 导入模板从 pygments.formatters.other 导入 NullFormatter注册 = 模板.图书馆()@register.tag(name='code')def do_code(解析器,令牌):代码 = token.split_contents()[-1]nodelist = parser.parse(('endcode',))parser.delete_first_token()返回代码节点(代码,节点列表)类代码节点(模板.节点):def __init__(self,lang,code):self.lang = langself.nodelist = 代码定义渲染(自我,上下文):代码 = self.nodelist.render(context)词法分析器 = get_lexer_by_name('python')返回突出显示(代码,词法分析器,NullFormatter())
我正在尝试使用此标签在 gameprofile.html
中呈现代码.
gameprofile.html
(% load pygmentize %}{% 块内容 %}<title>{% 块标题 %} |{{ game.title }}{% endblock %}<div id="gamecodecontainer">{% 代码 %}{{游戏代码}}{% 结束码 %}
{% 端块含量 %}
当我导航到 gameprofile.html
时,出现错误:
第 23 行的块标记无效:'code',应为 'endblock'.您是否忘记注册或加载此标签?
错误在这一行:(% load pygmentize %}
, an invalid tag.将其更改为 {% load pygmentize %}
I've created a custom tag that I want to use, but Django can't seem to find it. My templatetags
directory is set up like this:
pygmentize.py
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from django import template
from pygments.formatters.other import NullFormatter
register = template.Library()
@register.tag(name='code')
def do_code(parser,token):
code = token.split_contents()[-1]
nodelist = parser.parse(('endcode',))
parser.delete_first_token()
return CodeNode(code,nodelist)
class CodeNode(template.Node):
def __init__(self,lang,code):
self.lang = lang
self.nodelist = code
def render(self,context):
code = self.nodelist.render(context)
lexer = get_lexer_by_name('python')
return highlight(code,lexer,NullFormatter())
I am trying to use this tag to render code in gameprofile.html
.
gameprofile.html
(% load pygmentize %}
{% block content %}
<title>{% block title %} | {{ game.title }}{% endblock %}</title>
<div id="gamecodecontainer">
{% code %}
{{game.code}}
{% endcode %}
</div>
{% endblock content %}
When I navigate to gameprofile.html
, I get an error:
Invalid block tag on line 23: 'code', expected 'endblock'. Did you forget to register or load this tag?
The error is in this line: (% load pygmentize %}
, an invalid tag.
Change it to {% load pygmentize %}
这篇关于模板中未加载自定义标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!