django - Django - 在一个模板中显示多个视图
问题描述
我目前正在开发一个 Django 项目,我想在其中构建一种仪表板,它实际上可能有两个引导列(将来可能是 3-4 个)。在每一列中,将显示来自数据库的内容。目前,这意味着我想显示两个表格。一个显示模型的所有条目和一个显示最后历史条目的表(django-simple-history)。这些表是使用 django-table2 呈现的。
首先,我尝试使用 MultiTableMixin 解决问题。不幸的是没有成功。我目前的想法是在逻辑上将内容分成两个视图,然后为每一列添加一个视图。我试图让视图显示在 iframe 中。此外,这并不像想象的那么好。
我的问题有哪些选择。还是我想得太复杂而迷路了?
解决方案
您的标题有点误导,因为您的问题实际上很简单:
只需在您的视图中进行两个查询即可获得两个查询对象,您可以使用它们来呈现列/表。所以你有一个视图(功能),但逻辑仍然是分开的内容:
def get_data_for_columns(request):
column_all_data = YourModel.objects.all()
column_latest_data = YourModel.objects.all().order_by('-publish_date')[10:] # 10 latest objects by publish date
context = {
'all_data': column_all_data
'latest_data': column_latest_data
}
return render(request, 'your_template.html', context)
模板:
# example loop data and render table
<table>
<tr>
{% for item in all_data %}
<td>{{ item.value }}</td>
{% endfor %}
</tr>
</table>
<table>
<tr>
{% for item in latest_data %}
<td>{{ item.value }}</td>
{% endfor %}
</tr>
</table>