ajax - 大量数据,DataTables 渲染时间很糟糕
问题描述
我有一个视图显示一组大约 3000 多条记录的数据(多个对象组合成一个 QuerySet。结果使用 DataTables 渲染到一个表中,但渲染时间很糟糕 - 至少 15 秒。
我深入研究了 DataTables,发现了 deferRender API 选项和 AJAX 东西。因为我之前从未使用过它,所以我想就如何处理我的特殊情况寻求指导。以下是带有 DataTables 的 views.py 和模板。
视图.py:
def index(request):
clients = Client.objects.all().prefetch_related('loan_set', 'loan_set__case_set')
return render(request, 'app/index.html',
{'clients': clients})
索引.html:
<table id="case_list" class="display">
<thead>
<tr>
<td>Imię i nazwisko</td>
<td>Edycja</td>
</tr>
</thead>
<tbody>
{% for c in clients %}
<tr>
<td>{{ c.firstName }} {{ c.lastName }}</td>
{% if c.editLock %}
<td><i class="fas fa-lock fa-lg" style="color:Red" title="W edycji przez: {{ c.lockedBy }}"></i> {{ c.lockedBy }}</td>
{% else %}
<form method="post">
{% csrf_token %}
<td><a href="/edit/{{ c.pk }}" name="c_id"><i class="fas fa-pen-square fa-2x" style="color:green"></i></a></td>
</form>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function(){
$('#case_list').DataTable( {
deferRender: true
}
);
});
</script>
解决方案
查看datatables的文档。
$('#case_list').DataTable( {
"processing": true,
"serverSide": true,
"ajax": "{yourdata_url}"
} );
在您看来,您必须以 json 格式发送数据。请注意,您需要使用视图中的逻辑进行搜索等。
我也会研究 django-datatable-view 包。
推荐阅读
- windows - 在 Eclipse 中调用“make”和在终端中调用“make”有什么区别?
- html - 如何以这种格式 apache 日志?
- visual-studio-code - 在 VS Code 中使用语句自动导入
- laravel - Store multiple rows in multiple tables in Laravel
- git - Understanding Git: Latest push is not visible on production server
- android - How to navigate back in nested graph from the third level to the second level?
- powershell - Error while activating virtual environment in Windows 10 PowerShell
- angular - 使用文件配置生产 Angular 应用程序
- openssl - What is the file format of the private key when combining with a .cer to create a .pfx using OpenSSL
- excel - Cannot get an Excel file to open - Pandas and Matplotlib