[Django]-Returning Rendered Html via Ajax

67👍

There are a few issues with your code:

You need to use render_to_string.

You also don’t need to convert your HTML into json because you are replacing the contents directly.

Putting all this together you have:

from django.template.loader import render_to_string
from django.http import HttpResponse

if request.is_ajax():
    html = render_to_string('frontend/scroll.html', {'dishes': dishes})
    return HttpResponse(html)

In your front end, you need:

$.ajax({
        type: "POST",
        url: "/filter_home", 
        data: {'name': 'me', 'csrfmiddlewaretoken': '{{ csrf_token }}'},
        success : function(data) {
             $('.row.replace').html(data);
         }
});

0👍

The first argument of RequestContext is a request object.

You could either add the request object or use the Context class instead.

👤esauro

-1👍

First parameter to RequestContext() should be request, so update line in your code as

html = t.render(RequestContext(request, {'dishes': dishes})
👤Rohan

Leave a comment