[英]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.