2012-11-12 4 views
0

저는 javascript, ajax, python 및 django를 함께 사용하는 방법을 배우고 있습니다.django 템플릿에 ajax 응답 전달

내 프로젝트에서 사용자는 드롭 다운 목록에서 언어를 선택합니다. 그런 다음 선택한 항목이 서버로 다시 전송됩니다. 그런 다음 서버는 응답을 django 템플리트에 보냅니다. 이것은 자바 스크립트에 의해 이루어집니다. 장고 템플릿에서 html 코드를 업데이트하려면 예를 들어 독일어가 필요합니다. 어떻게 html 코드에 응답을 전달합니다. 응답은 다음 범위에서 볼 수 있습니다.

HTML 페이지를 다시로드하지 않고 수행하는 방법은 무엇입니까?

감사합니다.

답변

2

jquery를 사용하여 ajax 요청을 보내고 서버가 html 콘텐츠로 응답을 보낼 수 있습니다. 예 :

서버 : 서버가 아약스 요청을 받으면. 이것은 즉, 아약스

def update_html_on_client(request): 
    language = request.GET.get('language', None) 
    #for selected language do something 
    cal_1 = ... 
    return render_to_response('my_template.html', {'cal':cal_1}, content_instance = template.RequestContent(request)) 

템플릿을 통해 클라이언트에 렌더링 할 수있는 템플릿 HTML 콘텐츠를 반환 : 이것은 당신이 아약스 요청을 생성 할 때 사용하는 아약스 기능의 예입니다. 서버가 반환 한 HTML 응답을 채울 수있는 div를 선택할 수 있습니다.

function getServerResponse(){ 
$.ajax({ 
    url: 'your_url_here', 
    data: {language:'German'}, 
    dataType:'html' 
    success : function(data, status, xhr){ 
       $('#server_response').html(data); 
      } 
}); 
} 
0

템플릿이 서버에 렌더링되었으므로 페이지를 새로 고치면 새로 선택한 언어로 페이지가 다시 렌더링됩니다.

아약스를 사용하는 대신 쿠키를 사용하여 클라이언트에 상태를 유지할 필요가 없습니다. 어느 쪽이든, 재 장전은 여전히 ​​필요합니다.

클라이언트 측 템플릿을 조사 할 수 있습니다. Handlebars은 좋은 선택입니다.