模板中未加载自定义标签 [英] Custom tag not loaded in template

查看:21
本文介绍了模板中未加载自定义标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个想要使用的自定义标签,但 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆