作者:chung | 来源:互联网 | 2023-09-14 10:31
我有一个看起来像的字符串
string '''
{% block head %}{% endblock %}
... other stuff ...
{% block body %}{% endblock %}
... other stuff ...
'''
我想以下django模板继承上面的字符串:
{% block head %}
... other stuff ...
{% endblock %}
{% block body %}
Other stuff
{% endblock %}
由于字符串不在文件中,因此不能仅将其文件名指定给模板呈现引擎.有任何想法吗?
解决方法:
为了实现仅字符串模板扩展器,您可能必须实现模板加载器.实际上,更清洁的解决方案是使用下面的threed建议.在上下文中传递父模板()而不是磁盘模板的名称:
>>> from django.template import Context, Template
>>> extend_me = Template("Before A. {% block a %}{% endblock %}. After A")
>>> str_template = "{% extends parent %} {% block a %}This is inside A{% endblock %}"
>>> Template(str_template).render(Context({"parent": extend_me}))
u'Before A. This is inside A. After A'
不幸的是,这似乎不适用于django 1.3,可能是由于bug #7377(你不能在字符串模板中使用extends和block标签).虽然它在1.2中运行良好.所以如果你碰巧运行1.3,你可以查看这个问题的历史并使用我的黑客:)
extends模板标签允许您指定变量名称(从1.0开始).
在这个问题中有一个例子:How do I use Django’s template extends variable?