私は使用したいカスタムタグを作成しましたが、Djangoはそれを見つけることができません。私はgameprofile.html
でコードをレンダリングするために、このタグを使用しようとしていますDjango - このタグの登録または読み込みを忘れましたか?
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())
:私templatetags
ディレクトリは、このように設定されています。私はgameprofile.html
に移動すると
(% load pygmentize %}
{% block content %}
<title>{% block title %} | {{ game.title }}{% endblock %}</title>
<div id="gamecodecontainer">
{% code %}
{{game.code}}
{% endcode %}
</div>
{% endblock content %}
gameprofile.htmlは、私はエラーを取得する:カスタムタグが含まれてい
Invalid block tag on line 23: 'code', expected 'endblock'. Did you forget to register or load this tag?
'{%のdo_codeの%} {%のENDCODEの%}'動作しますか? (それは名前を無視していますか) – Sayse
私は試しましたし、 'do_code'も動作しません。 – 123
ええ、私のところに実際に見えていないのは、あなたがブロックの中にブロックを持っているという事実だけです。それが物事に影響するかどうかはわかりません(タイトル)。(私は間違っている可能性がある、私は入れ子ブロックを使用するとは思わない) – Sayse