Rendering JSON objects using a Django template after an Ajax call

前端 未结 8 1745
南笙
南笙 2020-12-02 03:59

I\'ve been trying to understand what\'s the optimal way to do Ajax in Django. By reading stuff here and there I gathered that the common process is:

  1. formul

8条回答
  •  有刺的猬
    2020-12-02 04:21

    Hey thanks vikingosegundo!

    I like using decorators too :-). But in the meanwhile I've been following the approach suggested by the snippet I was mentioning above. Only thing, use instead the snippet n. 942 cause it's an improved version of the original one. Here's how it works:

    Imagine you have a template (e.g., 'subtemplate.html') of whatever size that contains a useful block you can reuse:

         ........
        
    {% block results %} {% for el in items %}
  • {{el|capfirst}}
  • {% endfor %} {% endblock %}

    ........

    By importing in your view file the snippet above you can easily reference to any block in your templates. A cool feature is that the inheritance relations among templates are taken into consideration, so if you reference to a block that includes another block and so on, everything should work just fine. So, the ajax-view looks like this:

    from django.template import loader
    # downloaded from djangosnippets.com[942]
    from my_project.snippets.template import render_block_to_string
    
    def ajax_view(request):
        # some random context
        context = Context({'items': range(100)})
        # passing the template_name + block_name + context
        return_str = render_block_to_string('standard/subtemplate.html', 'results', context)
        return HttpResponse(return_str)
    

提交回复
热议问题