【问题标题】:how to loop ajax response data in Django template language?如何在 Django 模板语言中循环 ajax 响应数据?
【发布时间】:2019-12-12 14:22:11
【问题描述】:

我是 Django 新手,最近遇到一个问题:众所周知,在 html 中循环视图发送的数据很简单,如下所示:

{% for key in data %}
    <p>{{ key }}</p>
{% endfor %}

但是,在不刷新网页的情况下循环Ajax发送的数据呢?

$.ajax({
    data:{"data":data},
    url:'/processData/',
    type: 'POST',
    success: function (data) {

        //how to re-loop above piece code?

    }
})

你知道传统的方法是使用 Jquery 每个函数来附加标签,如下所示

success: function (data) {

        $(data).each(function (index, obj) {

           //process obj ,add tags,so as to simulate the effect of  {% for i in data %}

        });

    }

但是,我痴迷于用 django 模板语言解决它的方法 你能告诉我如何解决吗?如果你有任何想法,谢谢!

【问题讨论】:

    标签: python jquery django ajax


    【解决方案1】:

    您需要在视图中使用 JsonResponse。

    >>> from django.http import JsonResponse
    >>> response = JsonResponse({'foo': 'bar'})
    >>> response.content
    b'{"foo": "bar"}'
    

    或用于字典

    response = JsonResponse([1, 2, 3], safe=False)
    

    https://docs.djangoproject.com/en/3.0/ref/request-response/

    zh 与 jQuery 相比

    success: function (data) {
       $.each(data.data, function(k, v) {
           /// do stuff
       });
    }
    

    【讨论】:

      【解决方案2】:

      NKSM 建议的另一种方法是返回部分视图并将 html 注入。

      你的看法:

      def process_data(request):
          return render(request, 'partials/process_data.html', context={
              'data': [1, 2, 3],
          })
      

      partials/process_data.html 模板

      {% for key in data %}
          <p>{{ key }}</p>
      {% endfor %}
      

      那么你的加载JS就变成了

      var container = $('#some-container')
      container.load('/processData', {foo: "this is required to force a post rather than get")
      

      【讨论】:

        猜你喜欢
        • 2012-04-12
        • 2019-02-01
        • 2016-04-01
        • 2015-12-23
        • 1970-01-01
        • 2020-05-21
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多