首页 > 解决方案 > Django包含使用Javascript的模板

问题描述

我来自 Rails 背景,因此这个问题可能看起来很愚蠢。在 Rails 中,当我们创建 Ajax 请求时,我们可以通过使用 javascript 选择器渲染部分视图来更新视图,如下所示:

$("#dashboardEmails").html("<%=j render partial: 'emails', locals: {emails: @emails} %>");

我怎样才能在 Django 模板中做到这一点?我尝试了以下方法:

$.ajax({
        type: frm.attr('method'),
        url: frm.attr('action'),
        data: frm.serialize() + "&submit=connect",
        success: function (data) {
          if(data['tables'].length > 0){
            $('#data-connection-info').html("{% include 'projects/connection_info.html' with data='"data"' %}");
          }
          console.log(data);
        },
        error: function (data) {
          console.log("Error");
        }
});

在这里,我想用一个模板更新视图projects/connection_info.html,同时使用一个 javascript 变量(数据)传递给模板with。但它不起作用。

知道如何实现吗?

更新

我从视图中传递了模板,例如:

template = render_to_string('projects/connection_info.html', json_data)
return HttpResponse(json.dumps(template), content_type='application/json')

然后在 ajax 成功函数中更新 DOM:

success: function (data) {
          $('#data-connection-info').html(data);
 }

这样问题就解决了。:)

标签: javascriptajaxdjangopython-3.xdjango-templates

解决方案


我从视图中传递了模板,例如:

template = render_to_string('projects/connection_info.html', json_data)
return HttpResponse(json.dumps(template), content_type='application/json')

然后在 ajax 成功函数中更新 DOM:

success: function (data) {
          $('#data-connection-info').html(data);
 }

这样问题就解决了。:)


推荐阅读