Returning Rendered Html via Ajax

前端 未结 3 1764
感情败类
感情败类 2020-12-08 04:57

I am trying to return html via and Ajax call and I have the following snippet of code in my view

if request.is_ajax(): 
t = loader.get_template(\'frontend/sc         


        
相关标签:
3条回答
  • 2020-12-08 05:43

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

    html = t.render(RequestContext(request, {'dishes': dishes})
    
    0 讨论(0)
  • 2020-12-08 05:44

    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 讨论(0)
  • 2020-12-08 05:49

    The first argument of RequestContext is a request object.

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

    0 讨论(0)
提交回复
热议问题