Django 中 Pandas Dataframe 的分页

Pagination on Pandas Dataframe in Django

我在 Postgresql 中有数据并通过 ORM 查询将数据获取到我的名为 data 的数据框中,我的 view.py 如下所示:

view.py

from operator import index
from django.shortcuts import redirect, render
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.shortcuts import render
from bar_chart.models import AirQuality
from django.core.paginator import Paginator

#from django.views.generic import TemplateView
#from django.shortcuts import render
#from django.db.models import Sum
from django.db.models import Avg
from django.http import JsonResponse
from bar_chart.models import AirQuality
#from .models import *
import pandas as pd

# Create your views here.
def authenticate(request):
    count= User.objects.count()
    data= AirQuality.objects.all().values()
    print(data)
    df= pd.DataFrame(data)
    df1= df.tail(10)
    mydic = {
        "df": df1.to_html()
        #"count": count
    }
    return render(request, 'auth_home.html', context=mydic) 

    #, {'count':count}

我想在我的 auth_home.html 中呈现 pandas 数据框的那些页面(所有数据而不仅仅是数据的尾部)。在我的 pandas 数据帧上应用 Django 分页的出路(代码)是什么?

我能够按照 here 中关于分页的 django 文档解决我的问题。因为我在 postgresql 中有数据。因此,我制作了模型并通过在 div 中制作另一个 Table 来获取所有数据。因此,我编辑了我的 index.html 文件并从我的模型中导入了数据。下面一行

{% for contact in page_obj %}

是救命稻草,我用它包围了我的 table 并且我数据库中的所有行都已一一插入到我上面在 中创建的目标 table 中index.html .

我更新的index.html如下:

   <div class="col">
                        <table class="table bg-white rounded shadow-sm  table-hover">
                            <thead>
                                <tr>
                                    <th scope="col" width="50">#</th>
                                    <th scope="col">ID</th>
                                    <th scope="col">Location</th>
                                    <th scope="col">Carbon Monoxide (CO)</th>
                                    <th scope="col">Nitrogen Oxide (NO)</th>
                                    <th scope="col">Amonia (NH3)</th>
                                    <th scope="col">Carbon Dioxide (CO2)</th>
                                    <th scope="col">VOC</th>
                                    <th scope="col">PM1</th>
                                    <th scope="col">PM2</th>
                                    <th scope="col">PM3</th>
                                    <th scope="col">PM4</th>
                                    <th scope="col">PM5</th>
                                    <th scope="col">PM6</th>
                                    <th scope="col">PM7</th>
                                    <th scope="col">Created At</th>
                                    <th scope="col">Updated At</th>
                                </tr>
                            </thead>
                            <tbody>
                                {% for contact in page_obj %}
                                
                                    <tr>
                                        <th scope="row">1</th>
                                        <td>{{ contact.id}}</td>
                                        <td>{{ contact.loc}}</td>
                                        <td>{{ contact.co}}</td>
                                        <td>{{ contact.no2}}</td>
                                        <td>{{ contact.nh3}}</td>
                                        <td>{{ contact.co2}}</td>
                                        <td>{{ contact.voc}}</td>
                                        <td>{{ contact.pm1}}</td>
                                        <td>{{ contact.pm2}}</td>
                                        <td>{{ contact.pm3 }}</td>
                                        <td>{{ contact.pm4 }}</td>
                                        <td>{{ contact.pm5 }}</td>
                                        <td>{{ contact.pm6 }}</td>
                                        <td>{{ contact.pm7 }}</td>
                                        <td>{{ contact.created_at }}</td>
                                        <td>{{ contact.updated_at }}</td>
                                    </tr>
                                {% endfor %}
                                
                            </tbody>
                        </table>
                        <div class="pagination">
                            <span class="step-links">
                                {% if page_obj.has_previous %}
                                    <a href="?page=1">&laquo; first</a>
                                    <a href="?page={{ page_obj.previous_page_number }}">previous</a>
                                {% endif %}
                        
                                <span class="current">
                                    Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
                                </span>
                        
                                {% if page_obj.has_next %}
                                    <a href="?page={{ page_obj.next_page_number }}">next</a>
                                    <a href="?page={{ page_obj.paginator.num_pages }}">last &raquo;</a>
                                {% endif %}
                            </span>
                        </div>
                        <div class = "card">
                            <h1>Pollution Sensor Latest Data</h1>  
                            {{df|safe}}
                        </div>
                        

                    </div>