我有一个愚蠢的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
语句但在这种情况下我必须在所有视图中加载最后一个“条目”。
知道如何创建这个简单的侧边栏并用数据感受它吗?感谢。
答案 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'
但我不确定我是否正确理解了这个问题 希望有所帮助:)