2012-11-12 160 views
0

我正在學習使用javascript,ajax,python和django在一起。將ajax響應傳遞給django模板

在我的項目中,用戶從下拉列表中選擇一種語言。然後將選定的內容發送回服務器。然後服務器將響應發送回django模板。這是由JavaScript完成的。在Django模板中,我需要響應,例如德語,來更新html代碼。如何將響應傳遞給html代碼。答覆可以在......的範圍內看到。

如何在不重新加載html頁面的情況下執行此操作?

謝謝。

回答

2

您可以使用jQuery發送ajax請求,服務器可以發送帶有html內容的響應。 例如,

服務器:服務器收到ajax請求時。這將返回的HTML內容,即這可能是通過AJAX

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

模板呈現到客戶端模板:這是例子,你會用它來生成Ajax請求的AJAX功能。您可以選擇可填充服務器返回的html響應的div。

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

因爲您的模板在服務器上呈現,所以最好的辦法是簡單地重新加載頁面(用新選定的語言重新渲染頁面)。

使用ajax的替代方法是將語言存儲在cookie中,這樣您就不必在客戶端維護狀態。無論哪種方式,重新加載仍然是必要的。

您可以調查客戶端模板。 Handlebars是個不錯的選擇。