Django - 在基本模板中包含应用程序模板

时间:2015-11-09 15:49:33

标签: python django django-templates django-views

我尝试将应用结果包含在基本模板中。模板显示正常但我没有看到任何结果。当我直接打开app url(127.0.0.1/Project/config/)时,它会显示结果。

Project / urls.py

urlpatterns = patterns('',
    url(r'^$', 'Project.views.index'),
    url(r'^config/', DisplayChangelog),
)

config / views.py

from config.models import Changelog

def DisplayChangelog(request):
    changes = Changelog.objects.all()
    t = loader.get_template("changelog.html")
    c = Context({'changes': changes})
    return HttpResponse(t.render(c))

templates / base.html

...
<ul class="nav navbar-nav">
{% include "changelog.html" %}
</ul>
...

templates / changelog.html

...
{% for change in changes %}
<li class="media">
    <div class="body">
    {{ change.desc }}
    <div class="date">{{ change.date }}</div>
    </div>
</li>
{% endfor %}
...

2 个答案:

答案 0 :(得分:0)

您可以在定义&#34;更改后尝试此操作&#34;您视图中的变量: {% include "changelog.html" with changes=changes %}

答案 1 :(得分:0)

首先,如果你在每个页面上使用它们,你必须在base.html中放置一些变量,但你也必须以某种方式传递这些变量。当然,您不会在每个视图中向上下文添加一个对象,因此可以想到context processors。如果这真的是您需要的话,请查看文档。

在您的情况下,我认为只需将changes变量添加到index视图的上下文中,并将changelog包含在呈现的模板中通过index查看。

所以基本上我想说,如果你想在模板中使用它们,你必须将对象传递给视图的上下文,即使你在包含的模板中使用它们也是如此。