Django:在包含的模板中获取数据

时间:2014-05-11 03:53:28

标签: python django django-templates django-views

我有一个愚蠢的Django模板问题;想要创建带有最后“新闻”的简单侧边栏,并将其包含在我网站的多个页面中。所以我做这样的事情:

# views.py 
def right_sidebar_news(request):
    e = Entry.objects.last()
    return render(request, "_right_sidebar_news.html", {"entry": e})

我在我的模板中包含_right_sidebar_news.html,如下所示:

# some_theme.html
<!-- RIGHT COLUMN -->
{% include "_right_sidebar_news.html" %}
<!-- END RIGHT COLUMN -->

但是在几乎所有页面中(当然除了条目细节)变量“entry”是空的。 我知道with语句但在这种情况下我必须在所有视图中加载最后一个“条目”。

知道如何创建这个简单的侧边栏并用数据感受它吗?感谢。

2 个答案:

答案 0 :(得分:1)

这正是inclusion tags的用途。

答案 1 :(得分:0)

据我了解,您在right_sidebar_news视图中有数据? 您必须在包含Entry的所有模板中包含所需的_right_sidebar_news.html个对象,以便可以呈现此Entry
我会进入基于班级的观点:

class EntriesViewMixin(object):
    def get_context_data(self, **kwargs):
        context = super(EntriesViewMixin, self).get_context_data(**kwargs)
        context.update({'last_entry': Entry.objects.last()})
        return context

class SomeView(EntriesViewMixin, TemplateView):
    template_view = 'some_theme.html'

但我不确定我是否正确理解了这个问题 希望有所帮助:)