【问题标题】:Django: nested custom template tagsDjango:嵌套的自定义模板标签
【发布时间】:2011-12-15 15:22:38
【问题描述】:

我在 Django 中编写了 2 个自定义模板标签。 目标是在另一个内部使用一个自定义标签。是否允许? 自定义“外部”标签的模板如下所示:

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

渲染后的结果

无效的块标签:'custom_internal_tag',预期为'empty'或'endfor'

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

【问题讨论】:

    标签: python django templates


    【解决方案1】:

    它们绝对是允许的,但由于您的自定义标签未正确定义、定位或加载,因此可能会出现该错误。

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

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

    【讨论】:

    • 确实,我的外部标签模板不包含 {% load internal_tag %} 代码。
    • 在我的例子中——当一些自定义标签包含其他自定义标签时说:{% tag_from_lib1 %} {% tag_from_lib2 %} {% endtag_from_lib1 %}——我必须先加载lib2,然后是lib1,即我必须将{% load lib2 lib1 %}更改为{% load lib2 %} {% load lib1 %}。否则会出现“无效的块标签”错误。
    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2021-07-13
    • 2015-01-20
    • 2012-03-15
    • 2015-12-17
    • 2011-10-07
    • 2011-03-31
    相关资源
    最近更新 更多