2011-10-26 138 views
3

我已经在Django中编写了2个自定义模板标签。 目标是在另一个内部使用一个自定义标签。它允许吗? 自定义 “外部” 标签的模板看起来是这样的:Django:嵌套自定义模板标签

<ul> 
    {% for type in types %} 
     {% custom_internal_tag param1 %} 
    {% endfor %} 
</ul> 

其中后

无效的块标签渲染结果: 'custom_internal_tag',预计 '空' 或 'ENDFOR'

是否允许嵌套自定义标签?这种错误的原因是什么?

回答

9

他们肯定是允许的,但由于您的自定义标签没有正确定义,定位或加载,可能会出现该错误。

确保您的所有自定义标签都位于您的app/templatetags目录中,并且已正确加载,通常使用装饰器@register

参考:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#registering-custom-filters

+1

事实上,我的外层标签模板不包含{%负载internal_tag%}代码。 – AlexA

+0

在我的情况下 - 当一些自定义标签包含其他自定义标签时说:'{%tag_from_lib1%} {%tag_from_lib2%} {%endtag_from_lib1%}' - 我必须首先加载'lib2',然后加载'lib1',必须将'{%load lib2 lib1%}'改成'{%load lib2%} {%load lib1%}''。否则,“无效块标记”错误被踢入。 –

相关问题