数据采集​​优化

时间:2018-12-01 12:27:40

标签: python django database html-table

表中有很多记录(450k条记录),我怎么能比用这种方法更快?

def index(request):
params = Parameters.objects.all()
return render(request, "core/data_table.html", {"params": params})

我在html上插入表格:

{% extends 'base.html' %}

{% block content %}
   <html>
<body>
{% if params.count > 0 %}
    <h2>Data</h2>
    <table>
        <tr><th>Id</th><th>par_time</th><th>par_recipe</th><th>par_machine</th><th>par_fa</th><th>par_ag_typ</th><th>par_rollennr</th>
        <th>par_def_id</th><th>par_name</th><th>par_value</th></tr>
        {% for person in params %}
        <tr><td>{{ params.id }}</td><td>{{ params.par_time }}</td><td>{{ params.par_recipe }}</td><td>{{ params.par_machine }}</td>
        <td>{{ params.par_fa }}</td><td>{{ params.par_ag_typ }}</td><td>{{ params.par_rollennr }}</td><td>{{ params.par_def_id }}</td>
        <td>{{ params.par_name }}</td><td>{{ params.par_value }}</td></tr>
        {% endfor %}
    </table>
    {% endif %}
</body>
</html>
<p><a href="{% url 'home' %}">Return to home</a></p>
{% endblock %}

1 个答案:

答案 0 :(得分:1)

1-第一种解决方案是仅将所需的值传递回模板。 根据我在您的代码中看到的内容,您正在使用id, par_time, ..., par_value,因此,只需将此值传递给模板,而不是所有的python对象即可。像这样:

 Parameters.objects.all().values('id', 'par_time', ....

此方法比仅传递python对象更加优化。

2-在django模板中使用分页。您不需要加载表(用户端)中的所有数据。对所有数据进行分页,然后每页传递10个项目。有很多有关如何在Django中使用分页的文档。这是在您的django项目中使用的list of pagination apps