Ich habe ein benutzerdefiniertes Tag erstellt, das ich verwenden möchte, aber Django scheint es nicht zu finden. Mein templatetags
Verzeichnis ist wie folgt aufgebaut:Django - Haben Sie vergessen, dieses Tag zu registrieren oder zu laden?
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())
ich diesen Tag zu verwenden versuchen Code zu machen 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 %}
Wenn ich navigieren zu gameprofile.html
, erhalte ich eine Fehlermeldung:
Invalid block tag on line 23: 'code', expected 'endblock'. Did you forget to register or load this tag?
'ist {% do_code%} {% endcode%}' arbeiten? (ist es den Namen zu ignorieren) – Sayse
Ich habe es versucht, und 'do_code' funktioniert auch nicht. – 123
Hmm, die einzige Sache, die wirklich fehl am Platz dann zu mir ist, ist die Tatsache, dass Sie einen Block innerhalb eines Blocks haben ... nicht sicher, ob das die Dinge beeinflussen würde oder nicht (der Titel).(Ich könnte mich irren, ich glaube nicht, dass ich irgendwelche verschachtelten Blöcke verwende) – Sayse