我正在學習使用javascript,ajax,python和django在一起。將ajax響應傳遞給django模板
在我的項目中,用戶從下拉列表中選擇一種語言。然後將選定的內容發送回服務器。然後服務器將響應發送回django模板。這是由JavaScript完成的。在Django模板中,我需要響應,例如德語,來更新html代碼。如何將響應傳遞給html代碼。答覆可以在......的範圍內看到。
如何在不重新加載html頁面的情況下執行此操作?
謝謝。
我正在學習使用javascript,ajax,python和django在一起。將ajax響應傳遞給django模板
在我的項目中,用戶從下拉列表中選擇一種語言。然後將選定的內容發送回服務器。然後服務器將響應發送回django模板。這是由JavaScript完成的。在Django模板中,我需要響應,例如德語,來更新html代碼。如何將響應傳遞給html代碼。答覆可以在......的範圍內看到。
如何在不重新加載html頁面的情況下執行此操作?
謝謝。
您可以使用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);
}
});
}
因爲您的模板在服務器上呈現,所以最好的辦法是簡單地重新加載頁面(用新選定的語言重新渲染頁面)。
使用ajax的替代方法是將語言存儲在cookie中,這樣您就不必在客戶端維護狀態。無論哪種方式,重新加載仍然是必要的。
您可以調查客戶端模板。 Handlebars是個不錯的選擇。