Emu
Emu

Reputation: 5895

Django include template using Javascript

I came from a Rails background thus the question may seem stupid. In Rails, when we create a Ajax request, then we can update a view by rendering a partial using the javascript selector like the following:

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

How can I do that in Django template? I've tried the following:

$.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");
        }
});

Here, I want to update the view with a template projects/connection_info.html, also passing a javascript variable (data) to the template using with. But it is not working.

Any idea how can I achieve that?

UPDATE

I passed the template from the view like:

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

Then in the ajax success function updates the DOM:

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

In this way the problem is solved. :)

Upvotes: 2

Views: 446

Answers (1)

Emu
Emu

Reputation: 5895

I passed the template from the view like:

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

Then in the ajax success function updates the DOM:

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

In this way the problem is solved. :)

Upvotes: 2

Related Questions