首页 > 解决方案 > Django - 在一个模板中显示多个视图

问题描述

我目前正在开发一个 Django 项目,我想在其中构建一种仪表板,它实际上可能有两个引导列(将来可能是 3-4 个)。在每一列中,将显示来自数据库的内容。目前,这意味着我想显示两个表格。一个显示模型的所有条目和一个显示最后历史条目的表(django-simple-history)。这些表是使用 django-table2 呈现的。

首先,我尝试使用 MultiTableMixin 解决问题。不幸的是没有成功。我目前的想法是在逻辑上将内容分成两个视图,然后为每一列添加一个视图。我试图让视图显示在 iframe 中。此外,这并不像想象的那么好。

我的问题有哪些选择。还是我想得太复杂而迷路了?

标签: djangodjango-viewsdjango-templatesdjango-tables2django-simple-history

解决方案


您的标题有点误导,因为您的问题实际上很简单:
只需在您的视图中进行两个查询即可获得两个查询对象,您可以使用它们来呈现列/表。所以你有一个视图(功能),但逻辑仍然是分开的内容:

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>

推荐阅读