Javascript 如何使用Django中用户过滤的数据库中的数据生成气泡图(chart.js)?
我是Django的新手,被困在一个似乎没什么问题的地方。我正在尝试使用Python、Django、MySQL和chart.js制作动态气泡图。我的数据库中存储了组织。它们有一些属性,如姓名、收入、收件人数量等。我将向用户显示这些属性,用户可以对其进行筛选(例如,他可以显示只有比用户指定的收件人更多的组织)。然后我想创建一个气泡图来显示这些组织。我设法做到了这一点,但使用了所有数据库记录(静态解决方案,没有用户交互)。所以,在我的气泡图上,我现在可以看到所有东西,我想让它动态地依赖于用户输入(只显示被过滤的组织)。筛选数据位于myuserlist1.html文件的filter.qs中。 现在,我在my views.py中使用下面的代码,将数据库中的所有记录以JSON格式保存在已定义的URL下:Javascript 如何使用Django中用户过滤的数据库中的数据生成气泡图(chart.js)?,javascript,python,ajax,django,chart.js,Javascript,Python,Ajax,Django,Chart.js,我是Django的新手,被困在一个似乎没什么问题的地方。我正在尝试使用Python、Django、MySQL和chart.js制作动态气泡图。我的数据库中存储了组织。它们有一些属性,如姓名、收入、收件人数量等。我将向用户显示这些属性,用户可以对其进行筛选(例如,他可以显示只有比用户指定的收件人更多的组织)。然后我想创建一个气泡图来显示这些组织。我设法做到了这一点,但使用了所有数据库记录(静态解决方案,没有用户交互)。所以,在我的气泡图上,我现在可以看到所有东西,我想让它动态地依赖于用户输入(只显
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
organizations = Opp.objects.all().values()
data = list(organizations)
return Response(data)
def search(request):
user_list = User.objects.all()
user_filter = UserFilter(request.GET, queryset=user_list)
return render(request, 'user_list1.html', {'filter': user_filter})'''
我用于存储结果的Url:
url(r'^api/chart/data/$', ChartData.as_view()),
这是my chart.html文件的一部分:
<script>
{% block jquery %}
var endpoint = '/api/chart/data/'
var endpoint= form.attr('action')
var dynamicColors = function() {
var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
return "rgb(" + r + "," + g + "," + b + ")";
}
$.ajax({
method: "GET",
url: endpoint,
success: function(data){
//...... some logic there
}
})
</script>
{%block jquery%}
var endpoint='/api/chart/data/'
var endpoint=form.attr('action')
var dynamicColors=函数(){
var r=Math.floor(Math.random()*255);
var g=Math.floor(Math.random()*255);
var b=Math.floor(Math.random()*255);
返回“rgb”(“+r+”、“+g+”、“+b+”);
}
$.ajax({
方法:“获取”,
url:endpoint,
成功:功能(数据){
//……有些逻辑
}
})
我不知道该怎么做。我想用过滤数据生成JSON,并将其定位在URL下,而不是数据库中的所有数据,但我不知道怎么做。我不知道如何从视图中访问过滤的queryset。任何帮助都将不胜感激。提前谢谢你 您可以发出HTTP POST请求,而不是将JSON数据传递到后端。例如:
$.ajax({
method: "POST",
url: endpoint,
data: {
"organisation": "organisation_name"
},
success: function(data){
//...... some logic there
}
})
这将把数据作为JSON序列化对象传递给Django视图
然后在Django视图上,您可以反序列化组织并过滤模型:
import json
def get(self, request, format=None):
json_data = json.loads(request.body)
organisation_name = json_data.get("organisation")
organizations = Opp.objects.filter(name=organisation_name).values()
data = list(organizations)
return Response(data)