2013-01-04 3 views
0

확실한 질문입니다. 몇 가지 움직이는 부분이있는 템플릿이 있으며이 장고를 구성하는 가장 좋은 방법은 방향을 찾고 있습니다 response. 이 <\div>장고 템플릿 : 템플릿 업데이트 최적화

<div> 표시 complex_calculation_2의 결과 + A button을 div에 대한이 <\div>을 div에 대한

<div> 표시 complex_calculation_1의 결과 + A button 데이터를 업데이트하기 위해 데이터를 업데이트 :

이 같은 템플릿이 고려

<div>이 div의 데이터를 업데이트하기 위해 complex_calculation_3 + a button의 결과를 표시합니다.complex_calculation_4 + A button

<div> 결과 표시는 각 계산의 출력은 쉽게 저장 <\div>

전체 페이지를 업데이트합니다. 현재 button이 푸시 될 때마다 특정 계산을 다시 계산 한 다음 모든 부분에서 많은 forloop 반복을 발생시키는 전체 페이지를 다시 렌더링합니다.

템플릿의 각 부분을 최적의 방식으로 캐싱하고 싶습니다 (업데이트 될 페이지 부분 만 업데이트하고 업데이트 된 페이지를 렌더링하는 response) 적절하게.

제 궁금한 점은 : 효율성을 극대화하는 방식으로 어떻게 처리해야합니까?

답변

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

을 내가 원래 포함 그렇다면 ''데이터 1 ': 내 상황에 맞는 사전에 data1'는,이 스크립트가 업데이트 DATA1,하지만 어떻게 연결된보기를 호출하지 않고 html을 업데이트합니까? 나는이 스크립트에서'함수 (응답)'이 무엇을 요구하는지 짐작한다. – Cole

+0

@Cole ajax가 django와 어떻게 작동하는지 이해하십시오. 튜토리얼을 읽어보십시오. [this] (http://www.b-list.org/weblog/2006/jul/31/django-tips-simple-ajax-example-part-1/) 자습서를 확인하면 게시 한 스 니펫을 이해할 수 있습니다. –

+0

'url' 변수를 검사하여 실제로'url_name_for_your_view_here'를 유효한 url 이름으로 대체해야하는 관련 뷰를 호출하고 있습니다. 그런 다음 당신의 견해는 무언가를 돌려 줄 것입니다. 그래서'success' 함수는 여러분의 견해로부터 응답을받을'CallBack'입니다. 그리고'success' 함수에서 html로 업데이트해야 할 것을 업데이트하십시오. –

0

해당 사이트 방문자가 JavaScript를 사용한다고 가정 할 수 있다면 ajax, 을 사용하여 데이터를 보내고 별도의보기로 계산을 수행 한 다음 다시 사이트에 게시하면 전체 페이지가 다시로드되지 않습니다. , 그리고 그것은 매우 우아 해 보일 것이다.

물론 모든 방문자는 브라우저가 JavaScript를 지원하지 않아도 사이트를 사용할 수 있어야하지만 방문자 수가 소수 일 경우이 드문 경우에만 최적화해야합니다. 그것을 그대로 두십시오.

장고의 메커니즘을 캐싱하는 것에 대해 잘 모르므로, 실제로 Ajax에 의존 할 수 없다면 아무 것도 제안하지 않겠습니다.