【发布时间】:2019-10-16 01:44:35
【问题描述】:
我想在 Django 中使用数据表获取大数据(示例 5 000,000)。但处理速度很慢(页面加载时间为 12 秒)。用户登录网页。然后单击以测试 .html。后端进程运行到视图中的 test_json。视图调用使用 to_dict_json 获取数据库数据。在 Models.py 上。 Views 中的这个方法返回 Json 响应对象。 如何使用数据表在 Django 中制作更快的大数据
模型.py
class SysTest(models.Model):
class Meta:
db_table = 'sysTest'
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
Tip = models.ForeignKey(SysRefTip, on_delete=models.CASCADE)
Kod = models.CharField(_("Kod"), max_length=20, blank=False, null=False)
Aciklama1 = models.CharField(_("Açıklama 1"), max_length=100,blank=True, null=True)
Aciklama2 = models.CharField(_("Açıklama 2"), max_length=100,blank=True, null=True)
GrupKod = models.CharField(_("Grup Kodu"), max_length=20,blank=True, null=True)
SayKod = models.FloatField(_("Sayısal Değer"),blank=True, null=True)
def to_dict_json(self):
return{
'Id':self.id,
'Kod':self.Kod,
'Aciklama1':self.Aciklama1,
'Aciklama2':self.Aciklama2,
'GrupKod':self.GrupKod,
'SayKod':self.SayKod,
}
查看.py
def test_json(request):
persons = SysTest.objects.all()
data = [person.to_dict_json() for person in persons ]
response = {'data': data}
return JsonResponse(response,safe=False,content_type="application/json")
网址.py
from django.urls import path, include
from Referans.Views import testView
from django.conf.urls.i18n import i18n_patterns
app_name ="Test"
urlpatterns = [
path('', testView.test_listele , name="test"),
path('test/json/', testView.test_json, name='test_json'),
]
test.html
<div class="card-body">
<table id="myTable2" class="table datatable-responsive-control-right">
<thead>
<tr>
<th>Id</th>
<th>Kod</th>
<th>Açıklama1</th>
<th>Açıklama2</th>
<th>SayKod</th>
<th>GrupKod</th>
</tr>
</thead>
</table>
</div>
{% block js%}
<script>
$(document).ready( function () {
var t0 = performance.now();
degerleriGetir('test/json')
var t1 = performance.now();
});
function degerleriGetir(data){
table =$('#myTable2').DataTable({
Serverside:true,
Processing: true,
orderClasses: false,
bSortClasses:false,
bDeferRender: true,
scrollCollapse: true,
scrollY: 500,
stateSave: true,
scroller: {
loadingIndicator: true
},
ajax:{
url:('test/json'),
processing:true,
},
destroy:true,
columns: [
{'data': 'Id'},
{'data': 'Kod'},
{'data': 'Aciklama1'},
{'data': 'Aciklama2'},
{'data': 'GrupKod'},
{'data': 'SayKod'}
]
});
};
</script>
{% endblock js %}
【问题讨论】:
-
你必须使用分页器......你不能同时显示这么大的数据。
-
嗨,Lu,我不想同时显示大数据。我不知道如何在数据表中使用分页器。
-
要异步加载吗?
-
Lue,能不能举个django异步加载的例子
标签: django datatables