Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Django中用户过滤的数据库中的数据生成气泡图(chart.js)?_Javascript_Python_Ajax_Django_Chart.js - Fatal编程技术网

Javascript 如何使用Django中用户过滤的数据库中的数据生成气泡图(chart.js)?

Javascript 如何使用Django中用户过滤的数据库中的数据生成气泡图(chart.js)?,javascript,python,ajax,django,chart.js,Javascript,Python,Ajax,Django,Chart.js,我是Django的新手,被困在一个似乎没什么问题的地方。我正在尝试使用Python、Django、MySQL和chart.js制作动态气泡图。我的数据库中存储了组织。它们有一些属性,如姓名、收入、收件人数量等。我将向用户显示这些属性,用户可以对其进行筛选(例如,他可以显示只有比用户指定的收件人更多的组织)。然后我想创建一个气泡图来显示这些组织。我设法做到了这一点,但使用了所有数据库记录(静态解决方案,没有用户交互)。所以,在我的气泡图上,我现在可以看到所有东西,我想让它动态地依赖于用户输入(只显

我是Django的新手,被困在一个似乎没什么问题的地方。我正在尝试使用Python、Django、MySQL和chart.js制作动态气泡图。我的数据库中存储了组织。它们有一些属性,如姓名、收入、收件人数量等。我将向用户显示这些属性,用户可以对其进行筛选(例如,他可以显示只有比用户指定的收件人更多的组织)。然后我想创建一个气泡图来显示这些组织。我设法做到了这一点,但使用了所有数据库记录(静态解决方案,没有用户交互)。所以,在我的气泡图上,我现在可以看到所有东西,我想让它动态地依赖于用户输入(只显示被过滤的组织)。筛选数据位于myuserlist1.html文件的filter.qs中。 现在,我在my views.py中使用下面的代码,将数据库中的所有记录以JSON格式保存在已定义的URL下:

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)