一个值得肯定的菜鸟问题。我有一个模板,有几个活动部分,我正在寻找最佳方法来构建这个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
,仅更新需要更新和呈现的页面部分适当更新的页面。
所以我的问题是:我应该如何处理能够创造最大效率的方式?
答案 0 :(得分:1)
使用jquery
和ajax
更新模板的特定部分,假设:
<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我就不会提出任何建议。