我有一个完全适合Django ListView
的视图。像这样:
url(r'^$',
ListView.as_view(
queryset=Poll.objects.order_by('-pub_date')[:5],
context_object_name='latest_poll_list',
template_name='polls/views/index.html')),
但是我在视图的页面上我也希望显示来自其他模型的内容。该模型仅包含一行数据。它是全站点的,包含页脚文本页面标题等。
最佳解决方案是什么?理想情况下,我希望保留通用模型方法。
答案 0 :(得分:0)
有几种方法可以解决这个问题。视图绝对不是正确的地方。
模板标签 使用template tags的一种方法是迷你视图。无论您是从其他模型请求数据,还是渲染包含的模板。
因为您还可以将参数传递到模板标记中,所以可以通过上下文自定义它们。
上下文处理器 对于更简单的信息,context processors效果很好。我不会太复杂的数据,因为它是全局的,可以减慢每个请求。
另外,我还会质疑你的单行模型。我的猜测是允许用户编辑。如果用户访问它,期望一切可能的方法搞砸它。例如,添加更多行。有几个Django应用程序用于管理可能有用的用户可编辑设置。如果数据不会经常更改,我会将其设置为实际设置,或者将其放在模板片段中并{%include%}。