簡體   English   中英

如何在 Django 模板語言中循環 ajax 響應數據?

[英]how to loop ajax response data in Django template language?

我是 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 each 函數來附加標簽,如下所示

success: function (data) {

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

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

        });

    }

但是,我沉迷於通過 django 模板語言解決它的方法,你能告訴我如何解決它嗎? 謝謝,如果你有任何想法!

您需要在視圖中使用 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/

en 比 jQuery

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

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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM