Django模板:优化模板的更新

时间:2013-01-04 19:41:25

标签: django django-templates

一个值得肯定的菜鸟问题。我有一个模板,有几个活动部分,我正在寻找最佳方法来构建这个django response

考虑这样的模板:

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

<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>

答案 1 :(得分:0)

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

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

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