我正在使用django开发一个网站,并希望保留页眉和页脚的通用模板。页眉和页脚的内容因登录用户而异。所以我可以使用以下方式:
header=render_to_response('header.html',{....})
footer=render_to_response('footer.html',{....})
content=render_to_response('content.html',{....})
return header+content+footer
答案 0 :(得分:4)
苛刻,连接HttpResponse
对象不是这样做的方法。 Django(我相信,合理)方法建议使用模板包括和继承。请查看{% block %}
,{% include %}
和{% extend %}
模板标记here。
在您的情况下,实现模板继承的方式如下:
base.html :
<div> header code </div>
{% block content %}
<div>Default content</div>
{% endblock content %}
<div> footer code </div>
my.template.html :
{% extend 'base.html' %}
{% block content %}
<div>My new content</div>
{% endblock content %}
答案 1 :(得分:1)
您应该查看template inheritance。
基本上,这允许您在页眉和页脚中使用“基础”模板,您可以在其中定义(例如)“内容块”。
然后,您可以通过填写在Base模板中定义的(空或非)块来让其他模板“扩展”Base模板。
在Django中使用render_to_string并不是正确的方法。