是否可以解析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>
感谢。
答案 0 :(得分:3)
如果我正确理解了您的问题,那么可以使用{% 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>
希望这可能有所帮助。