Django:如何从模板中获取块?

2024-01-12

假设我的模板中有类似的内容{% block subject %}my subject{% endblock %}我加载这个模板tmpl = loader.get_template('mytemplate.html'),如何提取“我的主题”?


当您的模板扩展基础时,卡米洛的解决方案不起作用。我对其进行了一些修改以(希望)解决该问题:

from django.template import Context
from django.template.loader import get_template
from django.template.loader_tags import BlockNode, ExtendsNode

def _get_node(template, context=Context(), name='subject'):
    for node in template:
        if isinstance(node, BlockNode) and node.name == name:
            return node.render(context)
        elif isinstance(node, ExtendsNode):
            return _get_node(node.nodelist, context, name)
    raise Exception("Node '%s' could not be found in template." % name)

我真的不确定这是否是递归迭代所有节点的正确方法......但它适用于我有限的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:如何从模板中获取块? 的相关文章

随机推荐