python - 如何解析 django 模板并渲染特定标签

标签 python django django-templates

是否可以解析 django 模板并仅渲染特定标签? 这个snippet接近我正在寻找的内容,但它不会返回整个模板。 基本上如果我有这个模板作为输入

<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
{% mycustomtag "args" %}
{% endblock content %}
</body>
</html>

我只想渲染mycustomtag这是我正在寻找的输出

<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
<p>Result from mycustomtag</p>
{% endblock content %}
</body>
</html>

谢谢。

最佳答案

如果我正确理解你的问题,那么有一种方法可以做到这一点,使用 {% verbatim %} 标签。它将是added in Django 1.5 ,但现在您可以将其用作自定义标签 - 这是来源:https://code.djangoproject.com/ticket/16318

这里唯一的缺点是你不能直接使用这个模板,它需要双重渲染。如果这就是您所需要的 - 那么一切都可以。

要使用它,您所需要做的就是用 {% verbatim %} 将其他标签括起来:

{% load my_custom_tags %}  <-- this is needed to load the 'verbatim' and 'mycustomtag' tags
{% verbatim %}
<html>
<title>{% block title%}{% endblock %}</title>
<body>
{% block content %}
{% endverbatim %}

{% mycustomtag "args" %}

{% verbatim %}
{% endblock content %}
</body>
</html>
{% endverbatim %}

我用这个模板做了一个简单的测试:

@register.simple_tag
def mycustomtag(a):
    return "<p>%s</p>" % a

....

from django.template import loader, Context
print loader.get_template("test.html").render(Context({}))

这将打印以下内容:

<html>
<title>{%block title%}{%endblock%}</title>
<body>
{%block content%}

<p>args</p>

{%endblock content%}
</body>
</html>

希望这会有所帮助。

关于python - 如何解析 django 模板并渲染特定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11350249/

相关文章:

python - 向量已被插值的矩阵向量乘法 - Python

python - 在 python 模块中打包支持 R 代码?

python - 如何使用python-docx替换Word文档中的文本并保存

python - 将标题插入 Django 表单

python - 如何在 Django 中使相关字段成为必填项?

python - Django 模板中的总计/小计

python - 如何使用数据库值在 django 中创建自定义表单

django 多态树序列化器

for-loop - 如何在 Django 模板中添加、乘以数字变量?

python - 在 Django 中提供媒体服务