如何使用 django 的替代 json 格式将数据发送到动态 jstree
How to send data to dynamic jstree with alternative json format from django
我尝试了以下过程,但查询集的格式已完全改变。
$('#jstree').jstree({
'core' : {
'data' :{{data}} # here main issue
},
plugins : ["wholerow","unique","dnd","sort","state","contextmenu","contextmenubtn","themes"]
}).on("ready.jstree", function (e, data) { data.instance.open_all(); });
我在响应中发送的查询集:
data = Buildkb4.objects.values("id","text","parent")
return render(request,"registration/basetest.html",
{"data": data})
输出:
没有 table 结构,也没有数据,在页面源代码上,我得到以下查询输出:
data= <QuerySet [{'text': 'PKM', 'parent': 0, 'id': 1}, {'text': 'develop', 'parent': 1, 'id': 2}, {'text': 'social', 'parent': 1, 'id': 3}]>
我对 jstree 和 django 有一些基本的经验,这个解决方案可能会对你有所帮助
您在这里直接将查询集传递给模板中的数据,这是不可接受的。它接受 json 数据类型。
设计一个将 return json 数据的视图,您需要在 jstree 中。
from django.http import JsonResponse
def table(request):
data = table.objects.values("column1","column2")
data_list = list(data)
return JsonResponse(data_list,safe=False)
现在在您的模板中添加:
var arraycollection =(function() {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "####### url to acces data"
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
现在将 arraycollection 分配给 jstree 中的数据
我尝试了以下过程,但查询集的格式已完全改变。
$('#jstree').jstree({
'core' : {
'data' :{{data}} # here main issue
},
plugins : ["wholerow","unique","dnd","sort","state","contextmenu","contextmenubtn","themes"]
}).on("ready.jstree", function (e, data) { data.instance.open_all(); });
我在响应中发送的查询集:
data = Buildkb4.objects.values("id","text","parent")
return render(request,"registration/basetest.html",
{"data": data})
输出:
没有 table 结构,也没有数据,在页面源代码上,我得到以下查询输出:
data= <QuerySet [{'text': 'PKM', 'parent': 0, 'id': 1}, {'text': 'develop', 'parent': 1, 'id': 2}, {'text': 'social', 'parent': 1, 'id': 3}]>
我对 jstree 和 django 有一些基本的经验,这个解决方案可能会对你有所帮助
您在这里直接将查询集传递给模板中的数据,这是不可接受的。它接受 json 数据类型。
设计一个将 return json 数据的视图,您需要在 jstree 中。
from django.http import JsonResponse
def table(request):
data = table.objects.values("column1","column2")
data_list = list(data)
return JsonResponse(data_list,safe=False)
现在在您的模板中添加:
var arraycollection =(function() {
var json = null;
$.ajax({
'async': false,
'global': false,
'url': "####### url to acces data"
'dataType': "json",
'success': function (data) {
json = data;
}
});
return json;
})();
现在将 arraycollection 分配给 jstree 中的数据