【问题标题】:Concatenate httpresponse objects django连接httpresponse对象django
【发布时间】:2011-10-23 09:58:12
【问题描述】:

我正在使用 django 开发一个网站,并希望为页眉和页脚保留一个通用模板。页眉和页脚的内容因登录用户而异。所以有什么方法可以使用:

    header=render_to_response('header.html',{....})
    footer=render_to_response('footer.html',{....})
    content=render_to_response('content.html',{....})
    return header+content+footer

【问题讨论】:

  • render_to_string 这样做...刚刚发现。

标签: python django django-templates django-views


【解决方案1】:

苛刻,连接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 %}

【讨论】:

    【解决方案2】:

    你应该看看template inheritance

    基本上,这允许您拥有一个带有页眉和页脚的“基础”模板,您可以在其中定义(例如)“内容块”。

    然后您的其他模板通过填写您在基本模板中定义的(空或非空)块来“扩展”基本模板。

    在 Django 中使用 render_to_string 并不是正确的做法。

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 2013-09-17
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2017-03-28
      • 2016-09-17
      相关资源
      最近更新 更多