我从一本自定义模板标签中有这个例子的书中学习django,其中{%upper%}和{%endupper%}内的所有内容都变为.upper():
books_extras.py
declare module "Foo" {...}
当我使用def do_upper(parser, token):
nodelist = parser.parse(('endupper',))
parser.delete_first_token()
return UpperNode(nodelist)
class UpperNode(template.Node):
def __init__(self, nodelist):
self.nodelist = nodelist
def render(self, context):
output = self.nodelist.render(context)
return output.upper()
和{% upper %}
包装文字时,我收到此错误:
{% endupper %}
有没有另外一个例子,像这样的评论是有效的,我没有必要注册它:
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 116: 'upper'. Did you forget to register or load this tag?
那么,为什么我会收到此错误?
答案 0 :(得分:2)
正如错误消息所示,您忘记了register the tag:
def do_upper(parser, token):
...
return UpperNode(nodelist)
register.tag('upper', do_upper)
# alternative decorator syntax
@register.tag(name='upper')
def do_upper(parser, token):
...
或者您忘记将其加载到模板中
{% load book_extras %}
{% upper %}
text
{% endupper %}