2012-11-12 259 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是个不错的选择。