python - Django:如何从模板中获取 block ?

标签 python django django-templates

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

最佳答案

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

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)

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

关于python - Django:如何从模板中获取 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687173/

相关文章:

python - Tensorflow - tf.nn.weighted_cross_entropy_with_logits - logits 和目标必须具有相同的形状

python - 当 Python 处于优化模式时,如何对某些行为进行单元测试?

python - Django子目录查看并导入__init__.py中的所有文件

Django 如何部分渲染

python - Django:将模型字段标记为对模板安全的最佳实践

python - seaborn husl 或 hsl 调色板不工作 : remains default black and white colors

python - 将嵌套字典替换为空数据帧

python - 如何在 django 中分离我的模型?

python - django/python - 访问变量时数据库命中

google-app-engine - 在 Django 模板中使用 webapp2.uri_for