0

一个菜鸟问题可以肯定。我有一个包含多个移动部分的模板,我正在寻找构建这个 django 的最佳方式的方向response

考虑这样的模板:

<div>显示 complex_calculation_1 + a 的结果button以更新此 div 的数据<\div>

<div>显示 complex_calculation_2 + a 的结果button以更新此 div 的数据<\div>

<div>显示 complex_calculation_3 + a 的结果button以更新此 div 的数据<\div>

<div>显示 complex_calculation_4 + abutton更新整个页面的结果<\div>

每个计算的输出很容易保存。目前,每次button推送 a 时,我都会重新计算特定的计算,然后重新渲染整个页面,这会导致forloop所有部分的多次迭代。

我希望能够以最佳方式缓存模板的每个部分(那会是什么?),提供一个response只更新需要更新的页面部分并适当地呈现更新的页面。

所以我的问题是:我应该如何以创造最大效率的方式处理这个问题?

4

2 回答 2

1

使用jqueryandajax仅更新模板的特定部分,假设:

<div>
    <span id="data_1"> Display results of complex_calculation_1 + </span>
    <button class="data_btn" span_id="data_1">Update</button>
<\div>

<script>
 $('.data_btn').click(function(){
    // send post data which you need in `data` variable
    $.ajax({
        type: 'POST',
        url: '{% url 'url_name_for_your_view_here' %}',
        data: {'csrfmiddlewaretoken': '{{csrf_token}}'},
        dataType: "text",
        success: function(response) {
            $($(this).attr('span_id')).text(response.data);
            //where response.data is the data which you want to display
        },
        error: function(rs, e) {
            alert(rs.responseText);
            alert('Oops! something went worng..');
         }
     });
  });
</script>
于 2013-01-04T20:15:30.540 回答
0

如果您可以假设,该站点访问者启用了 JavaScript,您可以使用ajax来发送您的数据,在单独的视图中执行计算并将其发布回您的站点 - 这样整个页面就不会重新加载,并且看起来十分优雅。

当然,任何访问者都应该能够使用您的网站,即使他的浏览器不支持 JavaScript,但是,如果它只是少数访问者,那么我就不会为这些罕见的情况而优化它,就让它保持原样是。

我不确定 Django 中的缓存机制,所以如果你真的不能依赖 Ajax,我不会提出任何建议。

于 2013-01-04T20:04:43.027 回答